别烦我啦 2021-10-28 08:58 采纳率: 71.4%
浏览 36
已结题

求最大公约数和最小公倍数的题,运行错误求解

img

题目是正整数n和m(<=1000000),输入保证结果在int范围内,因为m*n会溢出,我就让m先除于最大公约数了,然后再乘n可是这样就运行错误了,解释说,浮点错误,检查是否有除以0的情况,俺不懂😭

  • 写回答

1条回答 默认 最新

  • 关注

    你代码贴错了吧,可以把相乘的结果用long long 类型保存。
    参考如下:

    #include <stdio.h>
    int main()
    {
        int m,n;
        int t,gys;
        long long gbs;
        scanf("%d %d",&m,&n);
        if(m>n)
            t =n;
        else
            t = m;
    
        //先求公约数
        for (;t>=1;t--)
        {
            if(m%t==0 && n%t==0)
                break;
        }
        gys = t;
    
        gbs = (long long)m/t*n;
        printf("%d 和%d 的公约数是%d,公倍数是%lld",m,n,gys,gbs);
        return 0;
    
    
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月13日
  • 修改了问题 10月28日
  • 创建了问题 10月28日