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

Просмотры: 119
Изменено: 24 ноября 2024

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

Решение:

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

for n in range(286564, 287271):
    divisors = [*search_div(n)]
    c = len(divisors)
    if count_d <= c:
        count_d = c
        divisors.sort()
        max_d = divisors[-2]

print(count_d, max_d)

Ответ: 112   143520