(Д. Муфаззалов) На отрезке \([20222022;~121332132]\) найдите пять наибольших составных натуральных чисел, минимальный простой делитель которых больше числа \(999.\) Выведите найденные числа в порядке убывания, справа от каждого числа – его минимальный простой делитель.
Решение:
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(122_000) if x > 999]
ans = set()
for x in pr:
for y in pr:
cand = x * y
if 20222022 <= cand <= 121332132:
ans.add((cand, min(x, y)))
ans = list(ans)
ans.sort(reverse=True)
for n, d in ans[:5]:
print(n, d)
Ответ:
\(121332131 \,\, 8963\)
\(121332097 \,\, 3347\)
\(121332053 \,\, 1291\)
\(121332037 \,\, 4481\)
\(121332031 \,\, 1741\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене