欧几里德算法依据的算法定理是:gcd(m,n)=gcd(n,m mod n);
(1) m除以n得余数r,若r为0,则n就是所求得最大公约数
(2) 若r不等于0,以n为m,r为n继续(1)
欧几里德算法又称为辗转相除法:代码如下
#include <stdio.h>
void main()
{
long m,n,c,r;
printf("请输入整数m,n:");
scanf("%d %d",&m,&n);
if(m<n)
{
c=m;
m=n;
n=c;
}
r=m%n;
while(r!=0)
{
m=n;n=r;
r=m%n;
}
printf("%d",n);
}