
№ 5227 (Уровень: Сложный) (М. Ишимов)
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 10**7, найдите все числа, соответствующие маске 3*52?, у которых нечётное количество делителей.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им максимальные делители, не считая самого числа.

from fnmatch import * - Импортируем все функции из библиотеки fnmatch.for x in range(3520, 10**7): - Создаём цикл по диапазону чисел от 3520 до 10**7 (в соответствии с условием) с помощью переменной xif fnmatch(str(x), '3*52?'): - Проверяем, соответствует ли строковое представление x шаблону '3*52?', используя функции fnmatchdivisors = set() - Создаём пустое множество divisorsfor j in range(2, int(x ** 0.5) + 1): - Пробегаем цикл по диапазону чисел от 2 до квадратного корня из x плюс 1 (используем квадратный корень, так как это значительно ускоряет выполнение программы) с помощью переменной jif x % j == 0: - Проверяем, делится ли x на j без остатка.divisors.add(j) - Добавляем j во множество divisorsdivisors.add(x // j) - Добавляем результат целочисленного деления x на j во множество divisors.