欧几里得算法
主要用于求两个数的最大公约数
对应于数学中的辗转相除法
例如 12 8
12除以8 得1 余4
8除以4 得2 余0
即12 8 的最大公约数为4
第一种思路
int gcd(int a,int b)
{
while(b)
{
int t=b;
b=a%b;
a=t;
}
return a;
}
第二种思路
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
即***gcd(a,b)=gcd(b,a mod b)***
另一种表示方法
三目运算符
此段代码a,b可以为0
int gcd(int a,int b)
{
return b>0?gcd(b,a%b):a;
}