用辗转相除法求最大公因数
辗转相除法的流程图如下:
其中,输入保证a>b。
参考代码如下:
#include <iostream>
using namespace std;
int main(){
int a, b;
cin >> a >> b;
// 假设确保 a > b
while(a % b != 0){
int c = a % b;
a = b;
b = c;
}
cout << b << endl;
return 0;
}
特别的,如果能用头文件algorithm的话,可以直接使用__gcd(int a, int b)函数来算最小公因数。我用的dev-c++是可以跑的通的。
参考代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int a, b;
cin >> a >> b;
int n = __gcd(a, b);
cout << n << endl;
return 0;
}
最小公倍数
最小公倍数可以通过求得的最大公因数来计算。
最小公倍数=a*b/最大公因数