C++求最大公約數(shù)四種方法解析
C++求最大公約數(shù)的四種方法思路,供大家參考,具體內(nèi)容如下
將最近學的求最大公約數(shù)的四種方法總結(jié)如下:
第一種:窮舉法之一
解釋:拿其中一個數(shù)出來,用一個臨時變量(tem)保存,每次都把那兩個數(shù)除以這個臨時變量。如果能除斷,直接返回tem;如果不能除斷,tem- -,直到都能除斷,再返回tem。tem就是它們的最大公約數(shù)。
#include <iostream>
using namespace std;
int CommFactor1(int m, int n); //函數(shù)的聲明
int main()
{
int a, b;
cin >> a >> b;
cout << "這兩個數(shù)的最大公約數(shù)為:" << CommFactor1(a,b)<< endl;
return 0;
}
int CommFactor1(int m,int n)
{
int tem;
for (tem = m;; tem--)
{
if (m % tem == 0 && n % tem == 0)
{
break;
}
}
return tem;
}
第二種:窮舉法之二
解釋:求出兩數(shù)的所有公因子,再把公因子累乘得到最大公約數(shù)。
#include <iostream>
using namespace std;
int CommFactor2(int m, int n); //函數(shù)的聲明
int main()
{
int a, b;
cin >> a >> b;
cout << "這兩個數(shù)的最大公約數(shù)為:" << CommFactor2(a,b)<< endl;
return 0;
}
int CommFactor2(int m,int n)
{
int i;
int factor = 1;
for (i=2;i<=m&&i<<n;i++)
{
while(m % i == 0 && n % i == 0) //這里不能用if語句,因為可能會有重復(fù)的公因子
{
factor = factor * i;
m = m / i;
n = n / i;
}
}
return factor;
}
第三種:輾轉(zhuǎn)相除法
解釋:將兩個數(shù)輾轉(zhuǎn)相除直到余數(shù)為0。(具體思想請問度娘)
#include <iostream>
using namespace std;
int CommFactor3(int m, int n); //函數(shù)的聲明
int main()
{
int a, b;
cin >> a >> b;
cout << "這兩個數(shù)的最大公約數(shù)為:" << CommFactor2(a,b)<< endl;
return 0;
}
int CommFactor3(int m,int n)
{
int z = n;
while (m % n != 0)
{
z = m % n;
m = n;
n = z;
}
return z;
}
第四種:輾轉(zhuǎn)相減法
解釋:將兩個數(shù)輾轉(zhuǎn)相減直到兩數(shù)相等。(具體思想請問度娘)
#include <iostream>
using namespace std;
int CommFactor4(int m, int n); //函數(shù)的聲明
int main()
{
int a, b;
cin >> a >> b;
cout << "這兩個數(shù)的最大公約數(shù)為:" << CommFactor4(a,b)<< endl;
return 0;
}
int CommFactor4(int m,int n)
{
while (m != n)
{
if (m > n)
{
m = m - n;
}
else
{
n = n - m;
}
}
return m;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實現(xiàn)LeetCode(147.鏈表插入排序)
這篇文章主要介紹了C++實現(xiàn)LeetCode(147.鏈表插入排序),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
C++計算任意權(quán)值的單源最短路徑(Bellman-Ford)
這篇文章主要為大家詳細介紹了C++計算任意權(quán)值的單源最短路徑,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04
c語言的cps實現(xiàn)求fibonacci數(shù)列示例
這篇文章主要介紹了c語言的cps實現(xiàn)求fibonacci數(shù)列示例,需要的朋友可以參考下2014-03-03

