鱼C论坛

 找回密码
 立即注册
查看: 3398|回复: 3

C语言之最大公约数和公倍数100道题里面的

[复制链接]
发表于 2013-12-9 18:32:45 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 Ъγ:_小ツ雨oο 于 2013-12-9 18:48 编辑
  1. main()
  2. {
  3. int a,b,num1,num2,temp;
  4. printf("please input two numbers:\n");
  5. scanf("%d,%d",&num1,&num2);
  6. if(num1 { temp=num1;                -----------这里---------------
  7. num1=num2;
  8. num2=temp;
  9. }
  10. a=num1;b=num2;
  11. while(b!=0)/*利用辗除法,直到b为0为止*/
  12. {
  13. temp=a%b;
  14. a=b;
  15. b=temp;
  16. }
  17. printf("gongyueshu:%d\n",a);
  18. printf("gongbeishu:%d\n",num1*num2/a);
  19. }
复制代码
代码中得IF语句答案给的错的,请帮我改一下,   还有,上面的IF语句的作用是什么,我给去了发现程序还能正常运行还是正确的答案。。  还有,假如a=num1=18,b=num2=12;   printf("gongbeishu:%d\n",num1*num2/a);    这个公倍数是怎么求出来的   18*12/18=============貌似错了

最佳答案

查看完整内容

if(num1b,下面的辗转相除法才能正确运行。 最小公倍数等于两个数的乘积除以最大公约数,num1*num2/a运行到这句时候,num1=18,num2=12,a=6,你再重新计算一下,18*12/6=36....
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-12-9 18:32:46 | 显示全部楼层
if(num1<num2)
PS:主要是为了让a>b,下面的辗转相除法才能正确运行。
最小公倍数等于两个数的乘积除以最大公约数,num1*num2/a运行到这句时候,num1=18,num2=12,a=6,你再重新计算一下,18*12/6=36....
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-9 19:12:37 | 显示全部楼层

那为什么我把IF语句去了程序也是运行正确呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-12-9 20:07:21 | 显示全部楼层
你把IF语句去掉,输入的时候先输12,再输18试试。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 04:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表