目录
核心代码
int gcd(int b,int a)
{
int r=b%a;
while(r!=0)
{
b=a;
a=r;
r=b%a;
}
return a;
}
证明(图像证明)
求a,b 的最大公约数,就是求最大的能完整覆盖a*b的长方形(即无缝隙空余)的正方形的边长,如图所示
如上图,这是一个a*b的长方形,我们以短边为第一个正方形的边长。尽可能多地覆盖,我们发现最后还剩下一个小长方形。
如上图:我们继续分割小正方形,此时小正方形的边长变为b%a,要分割的新矩形长a宽b%a
······以此类推,一直到正方形刚好能覆盖整个矩形为之。
疑点解释
1. 由上图我们可以知道每次下一轮出现的小正方形