C语言求最小公倍数的问题1
发布网友
发布时间:2023-11-14 11:39
我来回答
共6个回答
热心网友
时间:2024-01-08 13:46
楼主 你的逻辑上错误了。while(r) 这一段在第一次被执行后 你再输入数字就不执行了。因为R的值改变了。
一下是我按照你的算法编的程序,虽然很复杂 ,但是是根据你的方法和思路来的。
#include<stdio.h>
void main ()
{
int m,n,r,s,temp,min;
while(scanf("%d%d",&m,&n)!=EOF)
{
s=m*n;
if (m<n)
{
temp=m;
m=n;
n=temp;
}
if(m%n!=0)
{
loop:
r=m%n;
m=n;
n=r;
if(r!=0)
{
goto loop;
}
else
min=s/m;
;
}
else
min=m;
printf("%d\n",min);
}
}
热心网友
时间:2024-01-08 13:46
首先这里有个问题是while中首次用r判断时没有给r赋值,用do while试试
热心网友
时间:2024-01-08 13:47
估计是这里
while(r)
{
r=m%n;
m=n;
n=r;
}
找本书看看欧几里德是怎么样的
*(a,b)
{
if(b==0)
{
return a;
}
else
{
return *(b,a%b);
}
}
热心网友
时间:2024-01-08 13:47
我运行第一组数据可以求出,但第二组就不好使了呢
热心网友
时间:2024-01-08 13:48
改成r=1,就可以了!
热心网友
时间:2024-01-08 13:49
#include <stdlib.h>
#include<stdio.h>
int *(int a, int b);
int main ()
{
int m,n,lease_common_multiple;
if(scanf("%d%d",&m,&n)==2)
lease_common_multiple=m*n/*(m,n);
printf("%d\n",lease_common_multiple);
system("pause");
return 0;
}
int *(int a, int b)
{
a=abs(a);
b=abs(b);
if(b!=0)
return *(b,a%b);
else if(a!=0)
return a;
else
{
printf("Error:Both numbers are equal zero\n");
exit(1);
}
}