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

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