短除法:我们小学学习的用来求最大公约数的方法,体现在代码中主要的操作就是比较和累乘。
#include "iostream"
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
int min = (a < b) ? a : b;
while(!(a % min == 0 && b % min == 0))
{
min--;
}
cout << min;
return 0;
}
辗转相除法:它根据递推策略设计的,求解效率更高。
#include "iostream"
using namespace std;
int main()
{
int a, b, r;
cin >> a >> b;
r = a % b;
while(r)
{
a = b;
b = r;
r = a % b;
}
cout << b;
return 0;
}