|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.12.2020, 13:35 | #1 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Оператор For!
Код:
3 — простое число Наибольший множитель числа 4 равен 2 5 — простое число Наибольший множитель числа 6 равен 3 7 — простое число Наибольший множитель числа 8 равен 4 Наибольший множитель числа 9 равен 3 Наибольший множитель числа 10 равен 5 11 — простое число Наибольший множитель числа 12 равен 6 13 — простое число Наибольший множитель числа 14 равен 7 Наибольший множитель числа 15 равен 5 Наибольший множитель числа 16 равен 8 17 — простое число Наибольший множитель числа 18 равен 9 19 — простое число Привет всем! Подскажите почему просходит слудующее! а именно.... Как получается результат: >>> Наибольший множитель числа 9 равен 3 Как ?? переменной "factor" может быть присвоенно значение 3 если до этого оно было 4???? |
06.12.2020, 14:00 | #2 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,572
|
Цитата:
Вот чему равно i, тому и будет равно factor. При этом никакой зависимости от предыдущего значения нет. E-Mail: arigato.freelance@gmail.com
|
|
06.12.2020, 14:58 | #3 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Все равно не понятно, непонятно и то что 9/2 не делится нацело а соответственно условие не может выполниться.
|
06.12.2020, 15:14 | #4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,311
|
Это замечание только к алгоритму поиска делителей.
Код:
В этом коде проверяется делимость числа и ищется наибольший делитель (он же и множитель). При этом параметр цикла i изменяется от 2 до num/2. Можно искать множитель и до квадратного корня из числа. При этом, после получения первого делителя мы попадаем в тело условного оператора, где устанавливаем флажок, который сигнализирует что число составное. Затем можно вычислить наибольший множитель так factor = num / i, и покинуть цикл командой break. В этом случае будет меньше циклов. Пример. Если число равно 36, то поиск делителей надо вести до 18 (как в примере). С другой стороны поиск можно вести до 6 (sqrt(36) = 6). Первый делитель будет 2. Т.о. Число составное, а наибольший множитель - 36 / 2 = 18. PS: 9 / 2 = 4 - если делитель и делимое целого типа, то выполняется целочисленное деление. Тут в разных языках по разному. В некоторых используются два слэша: a // b - Python или оператор div (a div b) - Pascal. 9 % 2 = 1 - это остаток от целочисленного деления. Но 9 % 3 = 0 - остаток равен нулю и мы попадаем в тело условного оператора.
Как-то так, ...
Последний раз редактировалось ViktorR; 06.12.2020 в 15:20. |
06.12.2020, 16:44 | #5 | |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Цитата:
Но разве i в цикле for не изменятся? после того как найден наибольший множитель числа num 4 равен 2 - 2 это же i который и является factor num 6 равен 3 - 3 это i num 8 равен 4 - 4 это i слудующий идет num 9 равнен i 5 num9/2 = 4.5 если даже .5 мы отбросим будет целоцисленное 4 (4%5) == 0) Или i не увеличевается при i++? |
|
06.12.2020, 18:44 | #6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,572
|
Изменяется от 2 до num / 2 с шагом 1.
E-Mail: arigato.freelance@gmail.com
|
06.12.2020, 21:58 | #7 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Тогда почему Наибольший множитель числа 9 равен 3 а не 5?
Ведь i = 5; а значит num(9)/2; if num(4.5)%i(5) == 0) что я не так понял? что такое необычное с примером: Наибольший множитель числа 9 равен 3 и Наибольший множитель числа 15 равен 5 |
06.12.2020, 23:06 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,572
|
Потому что 9 на 5 не делится.
E-Mail: arigato.freelance@gmail.com
|
06.12.2020, 23:23 | #9 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
|
07.12.2020, 00:43 | #10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,318
|
Это особенность математики. 5 не является делителем числа 9.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Условный оператор,оператор цикла и массив | Klark73 | Microsoft Office Excel | 1 | 19.12.2011 17:09 |
Оператор выбора или условный оператор[Перенесено из JavaSE] | merhaba1992 | Помощь студентам | 1 | 20.01.2011 17:06 |
Условный оператор. Оператор выбора. Pascal | Сержuk | Помощь студентам | 4 | 17.11.2010 12:50 |
Вычислить используя, оператор цикла for и оператор безусловного пе | Knubbe | Помощь студентам | 1 | 18.12.2009 10:24 |