| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12168 人关注过本帖
标题:[求助]求三个数的最大公约数和最小公倍数
取消只看楼主 加入收藏
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
 问题点数:0 回复次数:7 
[求助]求三个数的最大公约数和最小公倍数
有C语言编写下列程序:输入三个正整数a,b,c,求其最大公约数和最小公倍数。
搜索更多相关主题的帖子: 最大公约数 最小公倍数 
2006-02-02 01:55
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 

明白了,谢谢。意思是从最小的入手,一次一次的去除,从大到小,只到都可以整除时就可以了。但是我觉得程序有点复杂,还有没有更捷径的方法啊?请教。


2006-02-02 16:50
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 

#include"stdio.h"
main()
{
int a1,a2,a3,b,b1,b2,b3;
scanf("%d%d%d",&a1,&a2,&a3);
b1=a1; b2=a2;b3=a3;
if(a1>a2){b=a1;a1=a2;a2=b;}
if(a1>a3){b=a1;a1=a3;a3=b;}
if(a2>a3){b=a2;a2=a3;a3=b;}
while(a2%a1!=0||a3%a1!=0)a1--;
printf("最小公约数是:%d",a1);
printf("最大公倍数是:%d",b1*b2*b3/a1);

}


2006-02-02 18:01
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
中这样的吗?

2006-02-02 18:02
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
#include"stdio.h"
main()
{
int a1,a2,a3,b,b1,b2,b3;
printf("输入三个数求其最大公约数和最小公倍数(数与数之间用逗号隔开):\n");
scanf("%d,%d,%d",&a1,&a2,&a3);
b1=a1; b2=a2;b3=a3;
if(a1>a2){b=a1;a1=a2;a2=b;}
if(a1>a3){b=a1;a1=a3;a3=b;}
if(a2>a3){b=a2;a2=a3;a3=b;}
while(a2%a1!=0||a3%a1!=0)a1--;
printf("最大公约数是:%d",a1);
printf("最小公倍数是:%d",a1*(b1/a1)*(b2/a1)*(b3/a1));
}

[此贴子已经被作者于2006-2-3 17:10:54编辑过]


2006-02-03 15:43
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
七楼的我看不懂是什么意思?程序运行的目的究竟是什么?

[此贴子已经被作者于2006-2-3 15:45:12编辑过]



2006-02-03 15:44
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 

abc三数,先按辗转法求ab最大公约数,再求bc最大公约数,然后再求两个最大公约数的最大公约数,结果就是三数的最大公约数。对吧。


2006-02-03 16:03
黑飞狐
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2005-11-12
收藏
得分:0 
因为我这里用的是!=0,面不是==0,所以只能用||.如果换成&&,则就会错。不信输入三个数试一试就行了。不过如果三个数中有两个数相等,那么求最小公倍数就成了问题。所以此程序还是有问题的。请教。
#include"stdio.h"
main()
{
int a1,a2,a3,b,b1,b2,b3;
printf("输入三个数求其最大公约数和最小公倍数(数与数之间用逗号隔开):\n");
scanf("%d,%d,%d",&a1,&a2,&a3);
b1=a1; b2=a2;b3=a3;
if(a1>a2){b=a1;a1=a2;a2=b;}
if(a1>a3){b=a1;a1=a3;a3=b;}
if(a2>a3){b=a2;a2=a3;a3=b;}
while(a2%a1!=0||a3%a1!=0)a1--;/*此处是只要有其中一个数不能被a1整除,则开始循环。因为我这里用的是!=0,面不是==0,所以只能用||.如果换成&&,则就会错。不信输入三个数试一试就行了。*/
printf("最大公约数是:%d",a1);
printf("最小公倍数是:%d",a1*(b1/a1)*(b2/a1)*(b3/a1));
}

2006-02-03 17:14
快速回复:[求助]求三个数的最大公约数和最小公倍数
数据加载中...
 
   



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

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