| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:好久没上来了,再次请教高手!
只看楼主 加入收藏
qqrori
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2005-3-19
收藏
 问题点数:0 回复次数:8 
好久没上来了,再次请教高手!
输入2个数,求出他的最小公倍数和最大公约数。(要求不准用辗除法)
这是我写的,不过是用辗除法的,我运行过,没有错,有错请指出,运行环境是VC++6.0
#include <stdio.h>
void main()
{
 int a,b,c,d,t;
 printf("请输入两个整数:");
 scanf("%d%d",&c,&d);
 a=c;
 b=d;
 while(b!=0)
 {
  t=a%b;
  a=b;
  b=t;
 }
 printf("最大公约数是:%d\n",a);
 printf("最小公倍数是:%d\n",c*d/a);
}
我现在不想用辗除法,那可以怎么样编写呢?请高手指教,谢谢!
搜索更多相关主题的帖子: 最小公倍数 运行环境 include 
2005-04-02 17:57
skycanny
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-5
收藏
得分:0 
你要发现新算法啊
关注ing
2005-04-02 18:04
skycanny
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-5
收藏
得分:0 

#include <stdio.h> void main() { int a,b,i,j; printf("请输入两个整数:"); scanf("%d%d",&a,&b); i = 1; j = 1; while(1) { i++; if( (a % i) == 0 && (b % i == 0) ) j = i; else if (i > (a > b ? a : b) ) break; }

printf("最大公约数是:%d\n",j); printf("最小公倍数是:%d\n",a*b/j); } PS: 没有经过严格测试,楼主看看能不能满足你的要求

2005-04-02 18:17
为了c
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-2-2
收藏
得分:0 
楼上的没错

2005-04-02 20:49
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
三楼的算法效率不高,建议使用顶楼的算法,欧几里德的辗转相除法。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-04-02 20:53
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

#include <stdio.h> #include <conio.h>

int gcd(int,int);

int main() { int m,n; printf("Please input two numbers: "); scanf("%d %d",&m,&n); printf("The greatest common divisor is %d\n",gcd(m,n)); printf("The lowest common multiple is %d\n",m*n/gcd(m,n)); getch(); return 1; }

int gcd(int m,int n) { int r; do { r=m%n; m=n; if(r) n=r; } while(r); return n; }


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-04-02 20:55
skycanny
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-5
收藏
得分:0 
人家不是都说了不能用Euclid算法的嘛?
2005-04-02 20:58
qqrori
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2005-3-19
收藏
得分:0 
三楼的没错,谢谢指教,如果能写出你是怎么样想的,那就更加完美了
2005-04-03 15:02
skycanny
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-5
收藏
得分:0 
很简单了
首先找出他们的公约数
在找出公约数中最大的
因为只有整数才有公约数的说法
所以我们可以从1开始迭代
迭代不长为1
2005-04-03 17:58
快速回复:好久没上来了,再次请教高手!
数据加载中...
 
   



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

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