整理一下求最大公约数的几种方法
1 辗转相除法
a 递归方法
int gcd(int a,int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
b 非递归
int gcd(int a,int b)
{
int r;
while(b!=0)
{
r=b;
b=a%b;
a=r;
}
return a;
}
2 相减
int gcd(int a,int b)
{
while(a!=b)
{
if(a>b)
a=a-b;
if(a<b)
b=b-a;
}
return a;
}
当两个整数a与b相差很大之时用第二种方法就比较浪费时间,比如说1与1000,这个时候用第二种方法显然要执行很多次a-b,算法执行效率较低,这个时候用辗转相除法显然更高效。