众所周知 因数和倍数是数论的开始
这在五年级会把大多数人搞的晕头转向
今天 就来谈一谈他们
公因数和最大公因数
求最大公因数有两种方法 一种是短除法 一种是辗转相除法
这里我们用辗转相除法 因为这样子好做一点
不知道什么是辗转相除法的 查一下去awa
话不多说 上代码!
#include <iostream>
using namespace std;
int f(int n, int m) {
if (n % m == 0)
return m;
return f(m, n % m);
} // 递归方式
int main() {
int n = 0, m = 0;
cin >> n >> m;
cout << f(n, m);
return 0;
}
如果你想要高级一点 求出两个数的所有公因数 那么你可以这么写
#include <iostream>
using namespace std;
const int N = 1e7;
int arr[N] = {};
int f(int n, int m) {
if (n % m == 0)
return m;
return f(m, n % m);
}
int main() {
int n = 0, m = 0;
cin >> n >> m;
int ans = f(n, m);
for(int i = 1;i <= ans / 2;++i)
if(m % i == 0)
cout << i << " ";
cout << ans;
return 0;
}