鱼C论坛

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

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

[复制链接]
发表于 2013-12-9 18:32:45 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 Ъγ:_小ツ雨oο 于 2013-12-9 18:48 编辑
main() 
{ 
int a,b,num1,num2,temp; 
printf("please input two numbers:\n"); 
scanf("%d,%d",&num1,&num2); 
if(num1 { temp=num1;                -----------这里---------------
num1=num2; 
num2=temp; 
} 
a=num1;b=num2; 
while(b!=0)/*利用辗除法,直到b为0为止*/ 
{ 
temp=a%b; 
a=b; 
b=temp; 
} 
printf("gongyueshu:%d\n",a); 
printf("gongbeishu:%d\n",num1*num2/a); 
} 
代码中得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....
想知道小甲鱼最近在做啥?请访问 -> 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....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

那为什么我把IF语句去了程序也是运行正确呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-9 20:07:21 | 显示全部楼层
你把IF语句去掉,输入的时候先输12,再输18试试。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 21:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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