//比较简单的一篇随笔~~~
#include<bits/stdc++.h> using namespace std; int gcd(int a, int b) { if(b==0) return a; else gcd(b,a%b); } int main() { int a,b; while(~scanf("%d%d",&a,&b)) { cout<<gcd(a,b)<<endl; } }
gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0)
a可以表示成a = kb + r(a,b,k,r皆为正整数),则r = a mod b
假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。
而r = a - kb,两边同时除以d,r/d=a/d-kb/d=m,等式左边可知m为整数,因此d|r
因此d也是(b,a mod b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。