最大公因数和最小公倍数!小白求助!!!
系统一直判断我的代码错误,我也不知道哪里错了,请给位帮忙看一下代码,谢谢谢谢了!!下面是题目
输入格式
一共1行数据,包含2个整数m和n,之间使用一个空格分隔。
输出格式
输出2行,第一行为最大公约数,第二行为最小公倍数,每行行末都有一个换行符。
数据规模与约定
整数m的值约定为 1 ≤ m ≤ 1 000 000 000。
整数n的值约定为 1 ≤ n ≤ 1 000 000 000。
样例输入
32 48
样例输出
16
96
#include <stdio.h>
int main()
{
int m, n, t, gcd, k;
scanf("%d %d", &m, &n);
if(m < n)//如果n》m就互换
{
t = m; m = n; n = t;
}
if(n != 0)//最后分母不为0
{
for(k = 1; k < n; k++)//筛选能同时被m和n整除的最大数,为最大公因数
{
if(m % k == 0 && n % k == 0)
{
gcd = k;
}
}
printf("%d\n", gcd);
printf("%d\n", (m * n) / gcd);//最小公倍数 = (m * n)/ 最大公倍数
}
return 0;
} 代码没有错,发一下你的错误描述 是不是超时了,用辗转相除法试试看 eyys666 发表于 2020-4-18 15:48
代码没有错,发一下你的错误描述
也没有任何的报错,只是评分系统一直就说有两个评分点不给分。 本帖最后由 耻思lhj 于 2020-4-18 21:49 编辑
应该是int的取值范围有问题,输入的值太大,可能下面m*n的时候会有问题 printf("%.lf\n", ((double)m * (double)n) / gcd);
不转成double进行m*n,值太大可能出错,实测 耻思lhj 发表于 2020-4-18 22:20
不转成double进行m*n,值太大可能出错,实测
系统不能够这让转,它要求的是整数输出,不能够浮点数 int改成long long int类型,
输出用%lld
页:
[1]