| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 1573 人关注过本帖
标题:[求助]求三个数的最大公约数和最小公倍数
收藏  订阅  推荐  打印 
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12
[求助]求三个数的最大公约数和最小公倍数

有C语言编写下列程序:输入三个正整数a,b,c,求其最大公约数和最小公倍数。
搜索更多相关主题的帖子: 最大公约数  最小公倍数  
2006-2-2 01:55
ADALE
Rank: 3Rank: 3
等级:中级会员
威望:4
帖子:482
积分:4978
注册:2005-11-18

最大公约数:先在这三个数x,y,z中找最小的(假设是x最小) ,然后用三个数都对x求模,如果余数为0即可break;else k=x,k--,再用这三个数对%k 。。。

大致这样剩下的自己想,不懂再问好了


喜欢宁静的平凡生活
2006-2-2 11:16
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12

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


2006-2-2 16:50
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12

#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-2-2 18:01
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12

中这样的吗?

2006-2-2 18:02
ADALE
Rank: 3Rank: 3
等级:中级会员
威望:4
帖子:482
积分:4978
注册:2005-11-18

以下是引用黑飞狐在2006-2-2 16:50:00的发言:

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

应该有,你有没有做过一道题是求俩个数的最小公倍数和最大公约数,可以参考他的做法

至于你的程序有点问题,在这里我先不说,你自己考虑一下,学c最重要还是学会自己找到问题的所在,这是别人教我的


喜欢宁静的平凡生活
2006-2-2 18:49
羊爱上了狼
Rank: 1
等级:新手上路
帖子:27
积分:370
注册:2006-1-30

#include<stdio.h>
main()
{
int a,b,i,t,half,j,k,beishu;
printf("请输入两个数:");
scanf("%d,%d",&a,&b);
if(a>b)
{t=a;a=b;b=t;}
half=a/2;
for(i=half;i>0;i--)
{if(a%i==0&&b%i==0)//最大公约数
break;}
j=a/i;//质因数
k=b/i;//质因数
beishu=i*j*k;//最小公倍数
printf("max=%d,min=%d",i,beishu);
}
我临时写的,楼主参考一下

掌握技术为国人的软件事业发展作出贡献!!!!这是我的愿望!!!
2006-2-2 20:26
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12

#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-2-3 15:43
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12

七楼的我看不懂是什么意思?程序运行的目的究竟是什么?

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



2006-2-3 15:44
黑飞狐
Rank: 1
等级:新手上路
帖子:32
积分:420
注册:2005-11-12

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


2006-2-3 16:03
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.092165 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved