(Д. Муфаззалов) На отрезке \([2022;~20222022]\) найдите пять наибольших составных натуральных чисел, минимальный простой делитель которых больше числа \(100.\) Выведите найденные числа в порядке убывания, справа от каждого числа – его минимальный простой делитель.
Решение:
Python
from math import isqrt
def sieve(n):
tmp = [True] * (n + 1)
tmp[0] = tmp[1] = False
for i in range(2, isqrt(n) + 1):
if tmp[i]:
for j in range(i**2, n+1, i):
tmp[j] = False
return [i for i in range(2, n+1) if tmp[i]]
pr = [x for x in sieve(202220) if x > 100]
ans = set()
for x in pr:
for y in pr:
cand = x * y
if 2022 <= cand <= 20222022:
ans.add((cand, min(x, y)))
ans = list(ans)
ans.sort(reverse=True)
for n, d in ans[:5]:
print(n, d)
Ответ:
\(20222009 \,\, 4111\)
\(20221973 \,\, 661\)
\(20221967 \,\, 2293\)
\(20221939 \,\, 2579\)
\(20221933 \,\, 823\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене