- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 行,递归
您可能关注的文档
- 日产2012:120企业培训万辆押注中国市场.doc
- 日剧精彩对白1.doc
- 日产车系故障代码查询.doc
- 日常例行营销的十个“守则”.doc
- 日常切猪腰时常用的花刀技法及其运用.doc
- 日常寒暄用语:.doc
- 日常生活用品 中德文对照.doc
- 日常祝福.doc
- 日常祝贺用语.doc
- 日常短信.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)