(Д. Муфаззалов) На отрезке \([2022;~20222022]\) найдите пять наибольших натуральных чисел с суммой цифр, кратной числу \(22,\) факториал каждого из которых имеет количество простых делителей, кратное числу \(2022.\) Выведите найденные числа в порядке убывания, справа от каждого числа – количество простых делителей его факториала.
Решение:
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 = sieve(20222022)
lp = len(pr)
# Факториал чисел [ pr[2021]; pr[2022] ) имеет 2022 простых делителя
# Факториал чисел [ pr[2021 + 2022]; pr[2022 + 2022] ) имеет ровно 2 * 2022 делителя и т.д.
st = lp // 2022 * 2022
q = 0
ans = []
while q < 10:
for n in range(pr[st - 1], pr[st]):
if sum(int(z) for z in str(n)) % 22 == 0:
ans.append((n, st))
q += 1
st -= 2022
ans.sort(reverse=True)
for n, d in ans[:5]:
print(n, d)
Ответ:
\(20122645 \,\, 1277904\)
\(20088310 \,\, 1275882\)
\(20088301 \,\, 1275882\)
\(20054425 \,\, 1273860\)
\(19952792 \,\, 1267794\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене