Разбор 25.PNG

№ 6210 (Уровень: Средний)

(Н. Сафронов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

Например, маске 123*4?5 соответствуют числа 123405 и 12300425.

Найдите все натуральные числа, не превосходящие 10**7, для которых выполняются одновременно все условия:

В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — сумму делителей.

Untitled

Комментарии к решению задачи:

  1. def Divisors(x): - Объявляем функцию Divisors, которая принимает один аргумент x и будет вычислять его делители.
  2. divisors = set() - Создаем пустое множество divisors, куда будем складывать найденные делители.
  3. for j in range(1, int(x**0.5)+1): - Используем цикл for, чтобы перебрать все значения j в интервале от 1 до квадратного корня из x. Уверен этот шаг стоит пояснить подробнее: такой алгоритм позволяет пробежать суммарно меньше чисел, но способствует нахождению первой половины делителей числа, а через найденные делители мы сможем найти их сомножители, например: делители числа 24: {1, 2, 3, 4, **тут корень** , 6, 8, 12, 24}