原理
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。
计算公式gcd(a,b) = gcd(b,a mod b)。
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(Greatest Common Divisor)缩写为GCD。
gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0)
源代码
#include <stdio.h>
unsigned int GCD(unsigned int M,unsigned int N);
int main(void)
{
unsigned long int m,n;
scanf("%lu %lu",&m,&n);
printf("%lu\n",GCD(m,n));
return 0;
}
unsigned int GCD(unsigned int M,unsigned int N)
{
unsigned int rem;
while(N > 0)
{
rem = M % N;
M = N;
N = rem;
}
return M;
}