c语言简单问题的困扰

来源:百度知道 编辑:UC知道 时间:2024/06/04 19:39:11
#include<stdio.h>
void main()
{
int a,b,c,n=2;
printf("输入两个正整数\n");
scanf("%d%d",&a,&b);
if(b>a)
{
c=a;
a=b;
b=c;
}

c=a%b;
while(c!=0)
{
a=a*n;
c=a%b;
n++;
}
printf("最小公倍数是%d\n",a);

}
最小公倍数就是大数的倍数 这样求为什么不对 比方输入5 3 答案是30..... 谁能解答啊 在线等待 等待。。。。。。
输入 应该没有问题 能帮我看看编程难道有问题 郁闷 啊

算法就有问题了
while(c!=0)
{
a=a*n;
c=a%b;
n++;
}
这里 当 b不是n(2)的倍数时就a就扩大了。。。依次下去 越变越大
补充下楼上的
int p=a*b;
while(b!=0)
{
a=a*n;
c=a%b;
n++;
}

printf("最小公倍数是%d\n",p/a);

辗转相除法:
while(b)
{
c=a%b;
a=b;
b=c;
}
最后a就是所求的最大公约数
最小公倍数是原来的两个数之积除以最大公约数

scanf("%d%d",&a,&b);

估计输入53当做a是53了吧

试下scanf("%d-%d",&a,&b);

然后输入5-3

输入格式必须与scanf里面的描述一致,如果用空格分隔的话
scanf("%d%d",&a,&b);改成scanf("%d %d",&a,&b);就好了