因此,这是我的代码,无需使用L.C.M即可计算G.C.D(最小公倍数):

int lcm(int x, int y){

    int max = 0, min = 0, ans = 0;

    if(y >= x){
        max = y;
        min = x;
        if(y % x == 0) return y;
    }else {
        max = x;
        max = y;
        if(x % y == 0) return x;
    }

    for(int i = 1; i <= max ; i++){
        if( (max*i) % min == 0){
            ans = max * i;
            break;
        }
    }

    return ans;
}


这是main

int main(){

    int u, v;

    printf("Input two numbers: ");
    scanf("%d%d", &u, &v);
    puts("");
    printf("LCM(%d, %d): %d",u , v, lcm(u, v));

    return 0;
}


它非常适合4 87 21等输入以及其他所有第一个较小的输入。一个例子:

It takes a lot of time to run if the value of first input is higher and does nothing

我在这里做错了什么?

我正在使用Dev-C ++。

最佳答案

else函数内的lcm语句中,它应该为min = y
那是我犯的错误。感谢TotallyNoob指出。

关于c - C中的两个数字的L.C.M,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58263017/

10-10 11:15