有若干种方法可以求最大公因数,这里只介绍两种
- 辗转相除法
#include<iostream>
using namespace std;
int gcd(int n,int m){
if(n % m == 0){
return m;
}
return gcd(m,n%m);
}
int main()
{
int n,m;
cin >> n >> m;
cout << "两数的最大公因数为: " << gcd(n,m);
return 0;
}
简化以后
int gcd(int n, int m) {
return m ? gcd(m, n % m) : n;
}
- __gcd()函数
在c++的内置函数中有一个叫__gcd()的函数可以直接用来求最大公因数,不过需要注意的是函数参数类型必须相同,并且不可以用浮点型,在使用时需要加algorithm头文件
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
cin >> n >> m;
cout << "两数的最大公因数为: " << __gcd(n,m);
return 0;
}
以上是两个数之间求最大公因数的方法,那么如何求出多个数之间的最大公因数呢?
int gcds(int arr[], int m) {
int tem = arr[0];
for (int i = 1; i < m; i++) {
tem = gcd(tem,arr[i]);//这里的gcd函数与上文辗转相除一致
}
return tem;
}