计算两个数的最大公约数。
- 一般方法:遍历所有不大于a和b的整数,看看是否同时满足余数为0。如果其中一个为0,则最大公约数就是另外一个不为0的数。如果两个都为0,则没有最大公约数(所有数都是可以整除)。
- 欧几里德算法:该算法证明,a和b的最大公约数同时也是b和(a mod b)的最大公约数。所以就可以不断循环,直到a mod b 等于0时,b就是最大公约数。
#include<iostream>
using namespace std;
int gys(int num1, int num2) {
if (num2 == 0) {
return num1;
} else {
gys(num2, num1 % num2);
}
}
void main()
{
int a, b;
while (scanf("%d%d", &a, &b) != EOF) {
printf("%d", gys(a, b));
}
}