C/C++ 求解最大公约数
最大公约数指两个或多个整数共有约数中最大的一个。
#include <stdio.h>
#include <conio.h>
//传统求法
int gcd(int m,int n)
{
int i;
for(i=m;i>0;i--)
if(m%i==0&&n%i==0)
break;
return i;
}
//辗转相除法
int gcd1(int m,int n)
{
int temp;
while(m%n!=0)
{
temp=m%n;
m=n;
n=temp;
}
return n;
}
//递归求法
int gcd2(int m,int n)
{
return m%n?gcd2(n,m%n):n;
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d和%d的最大公约数为:%d\n",m,n,gcd(m,n));
printf("%d和%d的最大公约数为:%d\n",m,n,gcd1(m,n));
printf("%d和%d的最大公约数为:%d\n",m,n,gcd2(m,n));
getch();
return 0;
}