Задача к ЕГЭ по информатике на тему «делители числа» №2

Среди целых чисел, принадлежащих числовому отрезку [326496; 649632], найдите числа, у которых количество четных делителей равно количеству нечетных делителей. При этом в каждой из таких групп делителей не менее 70 элементов. Для каждого найденного числа запишите через пробел само число и минимальный делитель, больший 1000. Такие пары так же отделите друг от друга пробелом.

def divs(x):  # функция, которая возвращает отсортированный список делителей числа
    d = set() # Множество для хранения делителей
    for i in range(1,int(x**0.5)+1):
    
# Если i делитель x
        if x % i == 0:
            d.add(i) # Добавляем i в множество делителей
            d.add(x//i) # Добавляем парный делитель
    return sorted(d) # Возвращаем отсортированный список делителей числа n

for x in range (326496, 649632+1) :
    d = divs(x)
    even = [x for x in d if x % 2 == 0] # список, в котором будут только чётные делители числа
    odd =  [x for x in d if x % 2 != 0] # список, в котором будут только нечётные делители числа
    if len(even) >= 70 and len(odd) >= 70 and len(even) == len(odd): # если в каждой группе минимум 70 делителей и по количеству делителей в каждой группе равны между собой
        print(x,min(x for x in d if x > 1000)) # вывод числа и минимального делителя, большего 1000

Ответ: 450450 1001 589050 1050 630630 1001
Оцените статью
Я решу все!