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=============貌似错了 if(num1<num2)
PS:主要是为了让a>b,下面的辗转相除法才能正确运行。
最小公倍数等于两个数的乘积除以最大公约数,num1*num2/a运行到这句时候,num1=18,num2=12,a=6,你再重新计算一下,18*12/6=36.... liufei_vip 发表于 2013-12-9 19:08 static/image/common/back.gif
if(num1b,下面的辗转相除法才能正确运行。
最小公倍数等于两个数的乘积除以最大公约数,num1*num2/a运行到 ...
那为什么我把IF语句去了程序也是运行正确呢 你把IF语句去掉,输入的时候先输12,再输18试试。。。
页:
[1]