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

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [312322; 486711] числа, у которых количество чётных делителей равно количеству нечётных делителей и при этом сумма делителей является нечётной. В ответ укажите количество таких чисел.

def divs(x): # функция, которая возвращает отсортированный список делителей числа
    d = set() # Множество для хранения делителей
    for i in range(1,int(x**0.5)+1):
        if x % i == 0:
            # Добавляем делитель и парный ему в множество
            d |= {i,x//i}
    return sorted(d) # Возвращаем отсортированный список делителей числа x
ans = []
for x in range(312322,486712):
    d = divs(x)
    odd = [x for x in d if x % 2 != 0] # список, в котором хранятся нечётные делители числа
    even = [x for x in d if x % 2 == 0] # список, в котором хранятся чётные делители числа
    if len(even) == len(odd) and sum(d) % 2 != 0:
        ans += [x]
print(len(ans))

Ответ: 49
Оцените статью
Я решу все!