Задание №25: Обработка целочисленной информации и маски
Основные типы и прототипы задания №25:
Маски чисел (* и ?)
Делители натуральных чисел
Поиск чисел с особыми свойствами делителей
Условие задания
*(П. Тюрин) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Напишите программу, которая перебирает целые числа, большие 100 000 000, в порядке возрастания и ищет среди них числа, кратные 9973, у которых ровно семь различных делителей, не считая единицы и самого числа, и кроме того наибольший делитель, не равный самому числу, соответствует маске *4*. В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце – наибольший делитель для каждого из чисел.
– символ «?» означает ровно одну произвольную цифру;
– символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Напишите программу, которая перебирает целые числа, большие 100 000 000, в порядке возрастания и ищет среди них числа, кратные 9973, у которых ровно семь различных делителей, не считая единицы и самого числа, и кроме того наибольший делитель, не равный самому числу, соответствует маске *4*. В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце – наибольший делитель для каждого из чисел.
Ответ:
397842916 198921458<br/>2486518225 497303645<br/>12034748209 1094068019<br/>16808863201 1292989477<br/>83646473089 2884361141
Шаблон решения на Python
# === Задание 25: Маски чисел и делители ===
from fnmatch import fnmatch
ans = []
for n in range(10**7, 10**8):
if fnmatch(str(n), "12*34?5"):
if n % 2024 == 0:
print(n, n // 2024)