Как найти наибольший общий делитель для двух чисел?
Естественно имеется ввиду реализация этого в коде.
Единственное, что сразу приходит на ум - брать наименьшее из двух чисел и делить его на него самого, а потом уменьшать делитель на единицу, пока не получится целое число. Получаем целое число - пробуем на последний делитель делить большее из исходных чисел, и так пока не найдем общий делитель.
Но это сродни сортировке методом "пузырька". Есть что-нибудь проще?
[Ответ]
-=Женек=- 21:56 21.03.2008
А вообще - конечная задача - как максимально сократить дробь - одно из данных чисел знаменатель, другое числитель. Делить знаменатель на числитель - не всегда приведет к искомому результату - например дробь 60/100 - как из нее получить 3/5 ?
[Ответ]
alexenin 22:34 21.03.2008
Делается через алгоритм простых чисел.
Задача с безконечным решением, потому как дроби бывают большими.
Для меня удобный способ - это написание алгоритма нахождения простых чисел с верхней границей и сохранение их в таблицу.
Берется корень числителя и от него вниз по таблице ищем делители, тоже самое со знаменателем.
Дальше уже ясно.
[Ответ]
Part!zan 00:33 22.03.2008
alexenin, не обижайся, но твой вариант говорит о том, что ты черезчур умный )
Алгоритм нахождения НОД давно придуман Евклидом. Алгоритм простой, как 2 копейки: числитель и знаменатель сравниваются и больший из них уменьшается на величину меньшего; делают это до тех пор, пока они не станут равны. Полученное число и есть НОД.