当前位置: 代码迷 >> C语言 >> 求最大公约数最小公倍数出问题
  详细解决方案

求最大公约数最小公倍数出问题

热度:312   发布时间:2007-10-31 22:06:46.0
求最大公约数最小公倍数出问题
作业题 怎么最小公倍数输出总不对啊 高手帮忙看看吧

#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&lt;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);
}

----------------解决方案--------------------------------------------------------
经验证,程序没有问题哦!
----------------解决方案--------------------------------------------------------
  相关解决方案