Среди целых чисел, принадлежащих числовому отрезку [326496; 649632], найдите числа, у которых количество четных делителей равно количеству нечетных делителей. При этом в каждой из таких групп делителей не менее 70 элементов. Для каждого найденного числа запишите само число и минимальный делитель, больший 1000. Все числа запишите в ответе через пробел по возрастанию в таком порядке: число1 егоделитель число2 егоделитель….
def two_groups(number): # функция, которая считает кол-во чётных и нечётных делителей и проверяет по условию
odd = 0
even = 0
for div in range(1, int(number ** 0.5) + 1):
if number % div == 0:
odd += (div % 2 == 1) # выражение, которое прибавляет 1 если число нечётное и 0 если чётное
even += (div % 2 == 0) # выражение, которое прибавляет 1 если число чётное и 0 если нечётное
if div != number // div:
odd += (number // div % 2 == 1) # выражение, которое прибавляет 1 если число нечётное и 0 если чётное
even += (number // div % 2 == 0) # выражение, которое прибавляет 1 если число чётное и 0 если нечётное
if odd == even and odd >= 70 and even >= 70:
return True
return False
def find_min_div(number): # функция, которая находит минимальный делитель числа, больший 1000
for div in range(1001, number + 1):
if number % div == 0:
return div
for i in range(326496, 649632 + 1):
if two_groups(i):
print(i, find_min_div(i), end=" ")
Ответ: 450450 1001 589050 1050 630630 1001