Ъγ:_小ツ雨oο 发表于 2013-12-9 18:32:45

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

本帖最后由 Ъγ:_小ツ雨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=============貌似错了

liufei_vip 发表于 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....

Ъγ:_小ツ雨oο 发表于 2013-12-9 19:12:37

liufei_vip 发表于 2013-12-9 19:08 static/image/common/back.gif
if(num1b,下面的辗转相除法才能正确运行。
最小公倍数等于两个数的乘积除以最大公约数,num1*num2/a运行到 ...

那为什么我把IF语句去了程序也是运行正确呢

liufei_vip 发表于 2013-12-9 20:07:21

你把IF语句去掉,输入的时候先输12,再输18试试。。。
页: [1]
查看完整版本: C语言之最大公约数和公倍数100道题里面的