网站大量收购独家精品文档,联系QQ:2885784924

最小公倍数与最大公约数.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最小公倍数与最大公约数

最小公倍数与最大公约数 #includeiostream using namespace std; int main() { /**int t1,t2,a,b,m,n; cout输入两个整数:\n; cinmn; t1=(mn)?m:n; for(int i=t1;i=m i=n;i--) { if(m%i==0 n%i==0) { cout最大公约数是:iendl; break; } } t2=(mn)?n:m; for(int j=t2;;i++) { if(j%m==0 j%m==0) { cout最小公倍数是:jendl; break; } } return 0;**/ int p,r,n,m,temp; coutplease enter two positive integer numbers n,m:; cinnm; if (nm) {temp=n; n=m; m=temp; //把大数放在n中, 小数放在m中 } p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用 while(m!=0) //求n和m的最大公约数 {r=n%m; n=m; m=r; } coutHCF=nendl; coutLCD=p/nendl; // p是原来两个整数的乘积 return 0; } 问题:请编写一个方法,功能是实现传入两个正整数,返回他们的最大公约数 分析:关于这道题的算法有多种,我们今天只研究下面这种算法: 1 public static int math(int a, int b) { 2 int hold = 0; 3 while (b != 0) { 4 hold = a % b; 5 a = b; 6 b = hold; 7 } 8 return a; 9 } 初看这个解法,你可能会一头雾水。再看看,更是不知所云。甚至怀疑这样算是不是可 以得到正确结果,但经过测试你会发现的确可以得到正确结果,这究竟是为什么呢?让我们 来分析一下这个算法,为了便于叙述,把行号加上: 第 1 行,程序调用这个方法时会传入两个正整数 a 和 b 第 2 行,声明一个 int 类型的变量 hold 并赋初值 0;第 3-7 行是一个 while 循环,循环条件是 b!=0; 第 4 行,用 hold 来保存 a%b 的结果 第 5 行,把 b 的值赋给 a 第 6 行,把 hold 的值赋给 b 若 b 不为 0,则进行下一次循环,直到 b=0 时停止循环 最后第 8 行把 a 的值返回。 首先我们假设程序只进行一次循环,也就是说:方法传入 a 和 b 时 第 4 行,hold=a%b=0; 第 5 行,a=b; 第 6 行,b=hold=0;再进行第 3 行判断循环停止 第 8 行,返回 a 的值,也就是第 5 行中方法开始时传入的 b 的值,这说明: 如果 a%b=0 那么 a 和 b 的最大公约数就为 b, 这点好理解,a%b=0 也就是说 a 能被 b 整除,那当然 a 和 b 的最大公约数就是 b 了。 关键是如果不是进行一次,而是进行多次循环呢? 为了便与理解,我把上面的程序改为递归算法: 1 public static int math1(int a, int b) { 2 if (b == 0) { 3 return a; 4 } 5 int hold = a % b; 6 a = b; 7 b = hold; 8 return math1(a, b); 9 } 第 1 行,程序调用这个方法时传入两个正整数 a 和 b 第 2-4 行,如果 b 等于 0 返回 a 的值 第 5 行,声明一个 int 类型的变量 hold 保存 a%b 的结果 第 6 行,把 b 的值赋给 a 第 7 行,把 hold 的值赋给 b 第 8 行,递归

文档评论(0)

sy78219 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档