C语言问题,求最小公倍数和最大公约数

来源:百度知道 编辑:UC知道 时间:2024/05/20 09:02:57
注:x,y是输入两数,CS除数,BCS被除数,YS余数
#include<stdio.h>
main()
{
int x,y,cs,bcs,ys;
printf("enter 2 numbers\n");
scanf("%d%d",&x,&y);
bcs=x;cs=y;
ys=bcs%cs;
while(ys!=0)
{
cs=ys;
bcs=cs;
ys=bcs%cs;
}
printf("%d%d",ys,x*y/ys);
}
怎么会出不了结果

将循环外的ys=bcs%cs; 去掉。
循环内的三句位置互换。

具体如下:

#include<stdio.h>
main()
{
int x,y,cs,bcs,ys=1;
printf("enter 2 numbers\n");
scanf("%d%d",&x,&y);
bcs=x;cs=y;

while(ys)
{
ys=bcs%cs;
bcs=cs;
cs=ys;

}
printf("%d %d",bcs,x*y/bcs);
}

#include<stdio.h>
int main()
{
int x,y,cs,bcs,ys;
printf("enter 2 numbers\n");
scanf("%d%d",&x,&y);
if(x<y)
{
int temp=x;
x=y;
y=temp;
}
bcs=x;cs=y;
ys=bcs%cs;
while(ys!=0)
{
bcs=cs;
cs=ys;
ys=bcs%cs;
}
printf("%-4d%-4d",cs,x*y/cs);
return 0;
}
注意输出~自己想想就明白~

bcs=cs;
ys=bcs%cs;
根据这两句,bcs肯定等于cs,所以ys等于0,循环体错了。

假设给出两数是x,y(x>y),最大公约数是a,最小公倍数是b。
b=x*y;
while(m!=0)
{
m=x%y;
x=y;
y=m;<