| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2132 人关注过本帖
标题:我写的“求最大公约数和最小公倍数“,拿出来晾晾,高手指点.............
只看楼主 加入收藏
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
 问题点数:0 回复次数:10 
我写的“求最大公约数和最小公倍数“,拿出来晾晾,高手指点.............
#include <stdio.h>
int get_gy_gb(int num1, int num2) {
  int i, min, result = 0;
  min = (num1 > num2) ? num2 : num1;        //Get the min num of the two.
  for (i = 1; i <= min; i++) {
      if (num1 % i == 0 && num2 % i == 0) {
          result = (result >= i) ? result : i;        //Get the max common divisor.
    }
  }
  return result;
}
int main(void) {
  int n1, n2, result;
  printf("Please input two numbers: \n");
  scanf("%d%d", &n1, &n2);
  result = get_gy_gb(n1, n2);
  printf("The max common divisor is : %d \n", result);
  printf("The min common multiple is : %d \n", (n1 * n2) / result);
  return 0;
}

有什么不足请高手们不吝赐教,谢谢!!!!!!!!!!!!

[[it] 本帖最后由 mqh21364 于 2008-3-12 17:49 编辑 [/it]]
搜索更多相关主题的帖子: result int 最小公倍数 最大公约数 min 
2008-03-12 10:32
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
result = (result >= i) ? result : i;        //result永远不可能大于或等于i吧
直接 result=i就可以了

最小公倍数可以使用 辗转相除法

How are you 怎么是你?
How old are you   怎么老是你?
2008-03-12 11:26
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
嗯,同意二楼的。
result = (result >= i) ? result : i;
直接改成
result = i;
即可

坚决不跟用TC的人打交道!
2008-03-12 12:23
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
哦,说得对,谢谢楼上的两位哦!!!!
2008-03-12 12:46
fangfangff
Rank: 1
等 级:新手上路
威 望:2
帖 子:479
专家分:0
注 册:2006-12-22
收藏
得分:0 
不错``````````

千里冰封---My Love 尽管相隔千里 , 依然拥有冰封
2008-03-12 14:43
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
谢谢楼上的!!!!!!感动。。。。。。
2008-03-12 15:54
赢政天下
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-2-28
收藏
得分:0 
lz的题目是不是写错了
则么会是最小公约数和最大公倍数那,最小公约数不就是1吗,最大公倍数那就是无穷了.
2008-03-12 17:19
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
是错了,谢谢秦始皇。。。。。。。
2008-03-12 17:50
赢政天下
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-2-28
收藏
得分:0 
你太客气了,寡人一向助人为乐。哈哈。。。。。
2008-03-12 22:19
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
如果面试你这么答,人家很失望的。如果给你两个数是1000001,1000003,
你这个最大公约数要算到多久?另外你函数里那个result也用的莫名其妙~。(总算明白你的意思了,原来你只是想把所有公约数临时记录到result。)

这个要用欧几里德算法来求,也就是前面那位网友说的辗转相除法。救人救到底,我还是给你写出来吧:最大公约数:
gcd(m,n)= m; (n=0)
          gcd(n,m%n); (其他)

最小公倍数=m*n/gcd(m,n);
2008-03-13 01:27
快速回复:我写的“求最大公约数和最小公倍数“,拿出来晾晾,高手指点......... ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013777 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved