Задание 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