2013年9月1日

摘要: 给定两个正整数m和n,我们计算它们的最大公因子d和两个整数a和b,使得a*m+b*n=d算法流程 E1.置a'=b=1;a=b'=0;c=m,d=n; E2.计算d和r,使得c=q*d+r; E3.若r==0;则退出,当前已有a*m+b*n=d; E4;c=d;d=r;t=a';a'=a;a=t-q*a;t=b';b'=b;b=t-q*b;返回E2.证明 递归版本: 对于已有的m和n,假设m>n;如果刨除变量a,b,a',b';算法与欧几里得算法完全一样,为计算最大公约数的算法. 最终要求的为a*m+b*n=d=GCD(m, 阅读全文
posted @ 2013-09-01 14:34 NoSoul.Love 阅读(303) 评论(0) 推荐(0) 编辑
 
摘要: 给定两个正整数m和n,求它们最大公因子,即能整除m和n的最大正整数(a=b*c,则b和c都能整除a)算法流程 E1.以n除m,r为所得的余数(0<=r<n) E2.如果r为0,算法解决,n为答案 E3.m=n,n=r;返回步骤E1证明 对于任意正整数q,存在m=q*n+r 1)如果r==0;n即为最大公约数 2)如果r!=0;对于任意m和n的公约数g; 因为r=m-q*n,所以g能整除r; 所以m和n的公因子集合与n和r的公因子集合相同 所以GDC(m,n)=GCD(n,r)=GCD(n,m%n)代码实现int GCD(int m,int n){ int r; ... 阅读全文
posted @ 2013-09-01 11:51 NoSoul.Love 阅读(206) 评论(0) 推荐(0) 编辑