我i使用的辗转相除法,先求最大公约数,在用两个数的乘积除以最大公约数得到最小公倍数!
这是我开始的做法#include <stdio.h>
int main()
{
int m, n, r1, temp, mul;
scanf("%d%d", &m, &n);
mul = m * n;
if(m <= n)
{
temp = m;
m = n;
n = temp;
}
do
{
r1 = m % n;
m = n;
n = r1;
} while(r1);
printf("%d %d", m, mul / m);
return 0;
}
这是我更改后的做法,就改了一下乘除顺序#include <stdio.h>
int main()
{
int m, n, r1, temp, mul;
scanf("%d%d", &m, &n);
if(m <= n)
{
temp = m;
m = n;
n = temp;
}
temp = m, mul = n;
do
{
r1 = m % n;
m = n;
n = r1;
} while(r1);
printf("%d %d", m, temp / m * mul);
return 0;
}
这是我们学校的oj平台,上面的方法不能通过,下面的方法就能通过,不知道什么原因,求解答!!!
|