Оператор по модулю Java и GCD

Почему этот код дает мне ответ 25?

public int findGcd() {
    int num = this.num;
    int den = this.den;

    while (den != 0) {
        int t = den;
        den = num % den;
        num = t;
    }

    return num;
}

Это основной метод:

public class FractionTest {
    public static void main(String args[]) {
        Fraction f = new Fraction();
        f.num = 25;
        f.den = 100;
        f.findGcd();
    }
}

Может ли кто-нибудь предоставить мне полный процесс того, как вся программа работает или работает?


person user759630    schedule 03.08.2011    source источник
comment
Ну и какого ответа вы ожидали?   -  person Karl Knechtel    schedule 03.08.2011
comment
Я ожидал 4 или 0, так как 25/100 равно 4, а 25% 100 = 4, извините, я просто очень запутался, может кто-нибудь прояснить ситуацию   -  person user759630    schedule 03.08.2011
comment
25/100 равно 0, 25%100 равно 25, 100/25 равно 4 и 100%25 равно 0.   -  person Karl Knechtel    schedule 04.08.2011


Ответы (4)


Потому что gcd(25, 100) = 25 наверное

person Paweł Obrok    schedule 03.08.2011
comment
Поскольку это, вероятно, продолжение этого вопроса: действительно, 25 - это НОД. Теперь, чтобы упростить дробь, разделите и числитель, и знаменатель на 25, и вы получите 1/4 вместо 25/100. Что правильно. - person Mark Biesheuvel; 03.08.2011

Он называется алгоритмом Евклида.

person Thilo    schedule 03.08.2011
comment
Я знаю, что это алгоритм Евклида, я использовал там псевдокод для своего кода, все, что я хочу, это иметь полное объяснение того, как работает программа, так как мне было трудно с оператором по модулю. - person user759630; 03.08.2011

Вот быстрый расчет, который вы также можете выполнить, отладив свою программу, чтобы увидеть, как она работает...

http://gcd.awardspace.com/?num1=25&num2=100&OG=on&SC=on&RF=on&RC=on

По ссылке показано, как выполняется расчет, если вы еще этого не видите. Надеюсь это поможет.

person Whitebear    schedule 03.08.2011

Цикл while работает так

день!=0 100 != 0

внутренний цикл

t = 25 (ден)

0 = 25 % 100

число = 25 (т)

вернуть 25 (число)

Итак, результат 25

person nidhin    schedule 03.08.2011