给定两个正整数m和n,求它们最大公因子,即能整除m和n的最大正整数(a=b*c,则b和c都能整除a)算法
E1.以n除m,r为所得的余数(0<=r<n)ide
E2.若是r为0,算法解决,n为答案spa
E3.m=n,n=r;返回步骤E1code
对于任意正整数q,存在 m=q*n+rblog
1)若是r==0;n即为最大公约数event
2)若是r!=0;对于任意m和n的公约数g;class
由于r=m-q*n,因此g能整除r;cli
因此m和n的公因子集合与n和r的公因子集合相同sed
因此GDC(m,n)=GCD(n,r)=GCD(n,m%n)im
int GCD(int m,int n) { int r; while(n!=0) { r=n; n=m%n; m=r; } return m; }