求最大公约数最小公倍数出问题
作业题 怎么最小公倍数输出总不对啊 高手帮忙看看吧#include<stdio.h>
#include<math.h>
void main()
{
int m,n,a,b,r;
printf("请输入第一个数:");
scanf("%d",&m);
printf("\n请输入第二个数:");
scanf("%d",&n);
if(m<n)
{
a=m;
b=m=n;
n=a;
}
while(r!=0)
{
r=m%n;
m=n;
n=r;
}
printf("\n最大公约数:%d",m);
printf("\n最小公倍数:%d\n",a*b/m);
}
----------------解决方案--------------------------------------------------------
我已经解决了 我太笨了 问这种问题
----------------解决方案--------------------------------------------------------
a,b没有附初值,因为当输入的数m>= n时,a,b的值就是随机的了
----------------解决方案--------------------------------------------------------
是因为当m>n那种情况没写 所以当出现那种情况输出就错误了
----------------解决方案--------------------------------------------------------
就算,m<n也错了
----------------解决方案--------------------------------------------------------
楼主的最大公约数输出错误应该为printf("%d",n);才对.
----------------解决方案--------------------------------------------------------
求两个数的最大公约数时与输入的两个数大小无关,不需要说明m>n.
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)//交换两个数,使大数放在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);
}
----------------解决方案--------------------------------------------------------
经验证,程序没有问题哦!
----------------解决方案--------------------------------------------------------