Напишите программу, которая выведет 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