A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hsx500 中级黑马   /  2015-5-8 11:01  /  688 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:输入两个正整数mn,求其最大公约数和最小公倍数。

请批评,指正,改进!

思路:
和求质因数的思路很相似,求出共同的质因数后,相乘,得最大公约数,m*n = 最大公约数*最小公倍数,最小公倍数可以求得
步骤:
1.定义,m,n,除数k,储存累乘的积s
2.构建while循环,终止条件是m或n小于除数
3.构建两个if判断,用取模运算求得因数
int m,n,s;
s = 1;
int k = 2;
while( m> = k && n>=k)
{
    if(m%k==0 && n%k==0)
      s = k*s;
    if(m%k!=0 || m%k !=0)
      k++;   
}
    s.o.p(最大公约数 s,最小公倍数 m*n/s);

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

5 个回复

倒序浏览
我的思路刚好是跟你反过来的。思路是:假设有两个整数m和n,然后,找出两个数中的最小数,这里我假设是最小数是n,然后用n作为因数的起点i,用m和n分别去除,如果能够整除,那么最大的公约数马上就出来,如果不能相除,然后i--,再来整除,用递归可以找出最大公约数。
回复 使用道具 举报
就是一个数学问题,根据公式套用就行
回复 使用道具 举报
你这至少把代码补全吧! 输出都是简写的,还没有定义输出的方法,这个能打印出来么?
回复 使用道具 举报
黄文昭 发表于 2015-5-8 21:34
你这至少把代码补全吧! 输出都是简写的,还没有定义输出的方法,这个能打印出来么? ...

好懒不想全部写出来 T T
是不是不适合当程序员。。。
回复 使用道具 举报
学习了,多练习总是好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马