LCM двух чисел в C - PullRequest
       47

LCM двух чисел в C

0 голосов
/ 07 октября 2019

Итак, вот мой код для вычисления LCM (наименьшее общее кратное) без использования GCD :

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 8, 7 21 и всего остального , в которых первое число меньше . Пример:

Запуск занимает много времени, если значение первого ввода выше и ничего не делает

Что я здесь не так делаю?

Я использую Dev-C ++.

1 Ответ

0 голосов
/ 07 октября 2019

В операторе else внутри функции lcm должно быть min = y. Это была ошибка, которую я делал. Спасибо TotallyNoob за указание на это.

...