Среди целых чисел, принадлежащих числовому отрезку [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