Задание 25. Информатика. ЕГЭ. Поляков-2580

Просмотры: 174
Изменено: 23 ноября 2024

(Б.С. Михлин) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку \([586132; \, 586430]\), числа, имеющие максимальное количество различных делителей. Найдите минимальное и максимальное из таких чисел. В ответе для каждого из них запишите два числа: количество делителей и наибольший делитель, не равный самому числу.

Решение:

Python


def search_div(n):

    divisors = set()

    for i in range(1, int(n**0.5)+1):
        if not n % i:
            divisors.add(i)
            divisors.add(n//i)
    
    return divisors

count_d = 0
max_d = 0
min_d = 0

for n in range(586132, 586431):
    divisors = [*search_div(n)]
    c = len(divisors)
    if c > count_d:
        count_d = c
        divisors.sort()
        min_d = divisors[-2]
    elif c == count_d:
        divisors.sort()
        max_d = divisors[-2]

print(count_d, min_d)
print(count_d, max_d)

Ответ:
80   293112
80   293160