Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [100000;
500000] числа, имеющие больше 150 чётных делителей, не считая самого числа и единицы. Для каждого
найденного числа запишите само число и разницу наибольшего и наименьшего из найденных
делителей в таблицу.
python
def count_even_divisors(n):
count = 0
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
if i % 2 == 0:
count += 1
if i != n // i and (n // i) % 2 == 0:
count += 1
return count
result_table = [] # Создаем пустой список для хранения результатов
for num in range(100000, 500001):
if count_even_divisors(num) > 150:
divisors = [i for i in range(2, int(num**0.5) + 1) if num % i == 0 and i % 2 == 0]
max_div = max(divisors) if divisors else -1
min_div = min(divisors) if divisors else -1
diff = max_div - min_div if max_div != -1 and min_div != -1 else -1
result_table.append([num, diff])
# Выводим результаты в виде таблицы
print("Numbert| Difference")
for row in result_table:
print(f"{row[0]}t| {row[1]}")
Этот код сначала определяет функцию `count_even_divisors`, которая подсчитывает количество четных делителей заданного числа. Далее, оно проходит по всем числам в интервале [100000; 500000], вызывая эту функцию и проверяя условие. Если число удовлетворяет условию, вычисляется разница между наибольшим и наименьшим четным делителем, и эта информация заносится в таблицу `result_table`.
В конце программы происходит вывод результатов в виде таблицы.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет