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

Напишите программу, которая выведет 5 наименьших чисел, больших 800000 у которых сумма нечётных нетривиальных делителей чётна, а сумма чётных нетривиальных делителей оканчивается на 4. Для каждого числа укажите через пробел само число и количество его нетривиальных делителей.

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

Ответ: 806450 16 814088 34 816642 28 819200 46 821762 4
Оцените статью
Я решу все!