最大公约数求法

求两个数a和b的最大公约数之前需要了解欧几里得算法

欧几里得算法精髓:
最大公约数d=gcd(a,b)=gcd(b,a%b);当b≠0;
否则d=b;

具体证明方法可以通过数学归纳法实现,这里从结论出发推出等式的合理性
若d为a,b的最大公约数:a=xd,b=yd,同时a可以描述为a=kb+r;
a%b=r;将以上等式代入:xd=kyd+r,r=(x-ky)*d。
由此可以看出gcd(a,b)和gcd(b,a%b)的最大公约数相同。
终止条件及a%b为0,则b为a的最大公约数,放到gcd(b,a%b)中最大公约数的值为b;

代码:
int gcd(int a, int b) { if(b==0) return a; return gcd(b,a%b); }

posted @ 2024-09-13 20:40  jenniferCAI  阅读(35)  评论(0)    收藏  举报