作业帮 > 综合 > 作业

ACM题,新人,代码可能麻烦了点帮忙看下哪儿错了,可以的话顺便说个好的代码.

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/12 22:43:24
ACM题,新人,代码可能麻烦了点帮忙看下哪儿错了,可以的话顺便说个好的代码.
Description
输入两个正整数,输出其最大公约数和最小公倍数.
Input
输入两个正整数n和m(n
ACM题,新人,代码可能麻烦了点帮忙看下哪儿错了,可以的话顺便说个好的代码.
#include"stdio.h"
int main()
{
int m,n,d[20],e[20],i,c,j=0,k=0,a=0,b;
scanf("%d%d",&m,&n);
for(i=1;i=0;k--)
{
if(d[j]==e[k])
a=d[j];
}
if(a!=0)
break;
}
for(c=1;c*m%n!=0;c++) //求最小公倍数
{
}
b=c*m;
printf("a=%d b=%d\n",a,b);
return 0;
}
改的太痛苦了,要我绝对不会这么写,既复杂又啰唆,而且可计算的数字范围太小
辗转整除求余法
#include"stdio.h"
int main(void)
{
unsigned long m,n,t,mul;
scanf("%lu%lu",&m,&n);
if(m>n)
{
t=m;
m=n;
m=t;
}
mul=m*n;
while(m%n)
{
t=m%n;
m=n;
n=t;
}
printf("%lu %lu\n",n,mul/n);
return 0;
}
再问: 谢谢! 不过,这个简单的代码中,if没有改变m和n的值,可是为什么“mul=m*n”后,mul得出的就是最小公倍数了?谢谢啊
再答: mul/n才是最小公倍数,数学问题,不解释