(А. Комков) Обозначим через \(S\) сумму делителей числа, не являющихся простыми, кроме единицы и самого числа. Если таких делителей у числа нет, то \(S\) равно нулю. Напишите программу, которая перебирает нечетные целые числа, меньшие \(912673,\) в порядке убывания и ищет среди них первые \(5\) чисел, которые кратны \(S.\) Для каждого из найденных чисел в отдельной строке сначала выводится само число, затем значение \(S.\) Строки выводятся в порядке убывания найденных чисел.
Решение:
Python
from math import isqrt
def is_prime(n):
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for i in range(3, isqrt(n) + 1, 2):
if n % i == 0:
return False
return True
q = 0
n = 912673
while q < 5:
n -= 2
divs = {d for i in range(2, isqrt(n) + 1) if n % i == 0
for d in (i, n // i) if not is_prime(d)}
if not divs:
continue
S = sum(divs)
if n % S == 0:
print(n, S)
q += 1
Ответ:
\(704969 \,\, 7921\)
\(571787 \,\, 6889\)
\(493039 \,\, 6241\)
\(389017 \,\, 5329\)
\(357911 \,\, 5041\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене