Найти в Дзене

25 номер с делителями

Задания могут быть 2 типов Разделения на два эти типа связаны с тем, что в первом случае придется перебирать все числа в поисках делителей, что очень долго. Во втором случае, перебор делителей можно сократить (по возможности, не всегда) и перебор пойдет быстрее. 🔴 Два вида решений: 1️⃣ с медленным перебором 2️⃣ с быстрым перебором (до корня квадратного) Все делители числа можно разделить на две половины (до корня и после) Найдя все делители с первой половины, можно найти сразу и делители со второй. Например: 3 - делитель числа, если 36 поделить на 3 - получится 12, делитель со второй половины. 🔴 Тип первый - нам нужны все делители ◾️ определяем диапазон чисел, который надо перебрать ◾️ определяем, можно ли в качестве делителей рассматривать 1 и само число ◾️ определяем, какое условие для отбора чисел В этом случае сто процентов лучше использовать быстрый способ перебора (хотя можно и медленный, но возможно придется очень долго ждать результатов)
Пример Какие еще могут быть вопросы: ?

Задания могут быть 2 типов

Разделения на два эти типа связаны с тем, что в первом случае придется перебирать все числа в поисках делителей, что очень долго. Во втором случае, перебор делителей можно сократить (по возможности, не всегда) и перебор пойдет быстрее.

🔴 Два вида решений:

1️⃣ с медленным перебором

-2

2️⃣ с быстрым перебором (до корня квадратного)

-3

Все делители числа можно разделить на две половины (до корня и после)

Найдя все делители с первой половины, можно найти сразу и делители со второй. Например: 3 - делитель числа, если 36 поделить на 3 - получится 12, делитель со второй половины.

-4

🔴 Тип первый - нам нужны все делители

◾️ определяем диапазон чисел, который надо перебрать

◾️ определяем, можно ли в качестве делителей рассматривать 1 и само число

◾️ определяем, какое условие для отбора чисел

В этом случае сто процентов лучше использовать быстрый способ перебора (хотя можно и медленный, но возможно придется очень долго ждать результатов)
Пример

-5
-6

Какие еще могут быть вопросы:

🧠 Найти сумму делителей: sum(c)

🧠 Найти минимальный или максимальный делитель: min(c), max(c).

❌ Тут будьте осторожны, обязательно нужна проверка, что длина списка больше 0! Если вызывать эти две функции от пустого списка, будет ошибка:

-7

🧠 Найти произведение делителей: prod(c). Эта функция содержится в библиотеке math, не забудьте подключить ее в начале программы:

-8

🔴 Тип второй - нам нужны особенные делители

💡 Пример 1

Здесь мы будем с помощью range обеспечивать подходящесть делителя

-9
-10

💡 Пример 2

Здесь будем перебирать все делители, а их нужность смотреть через if

-11
-12

❗ Обратите внимание, проверка на четность идет отдельно у делителя с левой стороны и отдельно у делителя справа! Потому что это разные числа и четность одного не влечет четность другого! И так про любое условие

Пример 3

-13

В этой задаче нужны только простые делители. Для удобства вынесем алгоритм проверки числа на простоту в отдельную функцию

-14

Сама программа:

-15

Подборка заданий