Показать сообщение отдельно
Старый 31.05.2011, 21:24   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от tatca Посмотреть сообщение
Я наверно не так выразилась. Извините! Не то,что не работает, я просто не понимаю где в решении сокращается дробь (как сказано в условии).Подскажите мне пожалуйста! Прошу прощения если обидела!!!
А, понятно.
Тут так:
1. Из двух чисел a и b находится меньшее. Это число с.
2. Прогоняется цикл по i от 2 до с. Если остатки от деления обоих чисел на текущее значение i (оба!) равны 0, то это означает, что и a, и b делятся на это i, что мы и проделываем - делим оба (и заодно число c) на это самое i.
Рассмотрим на примере.
Пусть a=10, b=15. Находим c=10 (меньшее из двух). Начинаем перебирать значения i от 2 и выше. Пока не дошли до i=5, общих множителей не обнаруживаем. При i=5 условие равенства нулю обоих остатков выполняется, значит делим все три числа на 5 и получаем новые значения: a=2, b=3, c=2. Поскольку после этого выполнилось условие i>c, цикл по i на этом завершается.
Возникает вопрос, а зачем нужен булевский флажок bu и внешний цикл по нему? А вот зачем. Допустим, a=4, b=8. Пройдя первый раз по i, мы получим 2/4, т.е. всё еще сократимую дробь! Поэтому нужно прогнать цикл по i еще раз, и так повторять, пока общих делителей не останется. Вот - как-то так.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070