Задание №25. Короткий конспект
Парные делители, простые множители, подстановки маски и точные условия завершения числового поиска.
В задании №25 перебираются числа и проверяются их свойства. До вычислений определяются строгие или включительные границы, требуемое количество результатов и смысл второго столбца.
Делители и множители
- d делит n, если
n % d == 0. Парный делитель равенn // d. Поиск доisqrt(n)включительно находит все пары. - Сумма минимума и максимума без единицы и самого числа: первый делитель d\ge2 даёт M=d+n/d. Делителей нет: значение определяется условием, в разобранных задачах ноль.
- Сумма всех различных делителей требует всех пар. При d^2=n корень добавляется один раз; включение единицы и самого числа проверяется отдельно.
- Простое число больше единицы и не имеет делителей от двух до корня. В разложении 12=2\cdot2\cdot3 три множителя, но два различных простых делителя.
- "Ровно два простых множителя, не обязательно различных" допускает квадрат простого. Для суммы крайних простых делителей нужны минимум и максимум разрешённого множества; единственный элемент занимает обе позиции.
Проверки вычисленного значения
| Условие для M | Python |
|---|---|
| Окончание 4 | M % 10 == 4 |
| Окончание 63 | M % 100 == 63 |
| Остаток 3 по 7 | M % 7 == 3 |
| Полный квадрат, M\ge0 | isqrt(M)**2 == M |
Палиндром, s = str(M) | s == s[::-1] |
Совместные условия соединяются через and. Требование к цифрам каждого множителя проверяется отдельно у каждого; простота суммы не следует из простоты слагаемых.
Маски и перебор
? заменяет ровно одну цифру; * любую последовательность, включая пустую. Совпадение всей записи проверяется fnmatchcase(str(n), mask).
При требовании делимости на q можно перебирать кратные с шагом q. Альтернатива: все подстановки маски с сохранением внутренних нулей и всех допустимых длин звёздочки, затем числовая сортировка без повторов.
Для n>L начало равно L+1. "Первые пять" означает пять успехов по возрастанию; "все до B включительно" требует пройти диапазон до конца. Верхняя граница Python range не включается.
Возможные ловушки
Ранняя остановка после первой пары теряет часть суммы всех делителей ↗. Поиск делителя с окончанием требует проверять обе стороны пары и выбирать минимум среди подходящих. Удаление повторений меняет смысл двух простых множителей ↗. В итоговых строках сверяются все ограничения, порядок чисел и нужная величина: сумма, частное либо выбранный множитель.