等等,有人提出算法有问题为啥无人关注?如果x小于y,那个while一次循环也不做,直接输出y作为最大公约数。具体算法我不想多说,辗转相除法,不难写的。
我做了个程序,对算法做了点儿修改,缺点是最大公约数输出两次,改下就好了。
#include"stdio.h"
int yue(int x,int y)
{
int temp,t=0;
while(1) //把除数看做被除数,余数看做除数
{
temp=y;
t=x%y;
x=temp;
if(t!=0) //对循环的停止控制有点儿问题,对照一下
y=t;
else
break;
}
printf("%d\n",y);
return y;
}
int bei(int x,int y) //两个数的乘积除以最大公约数
{
int temp,c=x*y,d,f;
d=yue(x,y);
f=c/d;
printf("%d\n",f);
}
void main()
{ int a,b,c,d,temp;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if(a<b)
{temp=a;a=b;b=temp;}
yue(a,b);
bei(a,b);
}
嘿嘿,新人发帖,说错勿怪