Решил своим способом, а заодно проверил решение от разработчиков. Никак не пойму эту логику:
while (first != second) {
if (first > second) {
first -= second;
}
if (second > first) {
second -= first;
}
}
return first;
НОД получится либо отрицательным, либо неправильным, если я правильно понял. В нашем конкретном случае: 42-24=18... 18-24=-6. Или int автоматом выдает модуль числа?
Denis Nkn
25 уровень
Вопрос
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAРазработчик в prosv.ruExpert
25 августа, 02:18
first = 42, second = 24
42 > 24
42-24 = 18 (first)
24 > 18
24 - 18 = 6
Если посмотреть на условия, мы всегда вычитаем из большего меньшее. Отрицательных чисел не будет (если они изначально не отрицательные)
+1
Denis Nkn
25 августа, 02:55
А, вот как это работает... Благодарю 🙏
0