最大公约数:先在这三个数x,y,z中找最小的(假设是x最小) ,然后用三个数都对x求模,如果余数为0即可break;else k=x,k--,再用这三个数对%k 。。。
大致这样剩下的自己想,不懂再问好了
| 全能ASP/PHP/ASP.NET主机,支持月付 | 专业 MSSQL 数据库空间,支持月付 | 专业 MySQL 数据库空间,支持月付 | 学习型 ASP/PHP/ASP.NET 主机 30元/年 |
| 高端软件开发 = 年薪十万不是梦 | 赛孚耐:软件保护加密专家 | 身份认证令牌USB KEY |
最大公约数:先在这三个数x,y,z中找最小的(假设是x最小) ,然后用三个数都对x求模,如果余数为0即可break;else k=x,k--,再用这三个数对%k 。。。
大致这样剩下的自己想,不懂再问好了

#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);
}

明白了,谢谢。意思是从最小的入手,一次一次的去除,从大到小,只到都可以整除时就可以了。但是我觉得程序有点复杂,还有没有更捷径的方法啊?请教。
应该有,你有没有做过一道题是求俩个数的最小公倍数和最大公约数,可以参考他的做法
至于你的程序有点问题,在这里我先不说,你自己考虑一下,学c最重要还是学会自己找到问题的所在,这是别人教我的


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