思想:
gcd(greatest common dibisor)即最大公约数,也就是说:正整数a,b的最大公约数 与 b,a模b(a除b的余数)的最大公约数是相等的。
证明:
a可以表示为k倍的b加上一个正整数r
假设a,b公约数为x,等式两边同时除x
已知a/x与b/x必定为正整数,则可得r/x也为正整数。可以得出:一个数能同时整除a,b,则必然同时整除b,r。由此可见a,b公约数 与 b,r公约数相等,则最大公约数也相等。
举例:
求511和292最大公约数:
程序:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int k = 0;
while (k = a % b)
{
a = b;
b = k;
}
printf("%d\n", b);
return 0;
}