只用了一个for循环就超时了 求解

图片说明图片说明

图片说明

题目是求最大公约数何最小公倍数的和,程序运行也没问题,但是提交了就显示超时,求解一下

老哥,你这写法太暴力了,m和n都是 $10^9$ 数量级的,你从头遍历一遍求最大公约数当然超时啊。
你可以百度一下辗转相除法求最大公约数。

最简单的减小时间复杂度的方法,数值范围缩小为m和n的倍数,扩增按照倍数扩增,即将数值空间按照x,y方向缩放

long fun(long n,long m) {
    long s=m*n;
    long r=m%n;
    while(r>0){
        m=n;
        n=r;
        r=m%n;
    }
    return s/n+n;
}