欧几里德算法 GCD

时间:2024-01-04 18:12:44

递归:

 int gcd(int a,int b)
{
return b==?a:gcd(b,a%b);
}

非递归:

 int gcd(int m,int n)
{
int r;
while( (r=m%n)>)
{
m=n;
n=r;
}
return n;
}

不用考虑那个数值大小的问题,直接进行运算

数据测试:

gcd(8,12)

1.while   r=8%12=8

    m=12 n=8

2.while  r=12%8=4

    m=8 n=4

3.while  r=8%4=0  //跳出循环

cout n //n=4