(А. Кабанов) Обозначим через \(F\) целую часть среднего арифметического всех простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(F\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(650000,\) в порядке возрастания и ищет среди них такие, для которых значение \(F\) при делении на \(37\) даёт в остатке \(23.\) Выведите первые \(4\) найденных числа в порядке возрастания и справа от каждого числа – соответствующее значение \(F.\)
Решение:
Python
def prime_divs(n):
res = set()
for i in range(2, int(n**0.5) + 1):
while n % i == 0:
res.add(i)
n //= i
if n > 1:
res.add(n)
return res
q = 0
for x in range(650001, 10**10):
d = prime_divs(x)
d.discard(x)
M = sum(d) // len(d) if d else 0
if M % 37 == 23:
print(x, M)
q += 1
if q == 4:
break
Ответ:
\(650090 \,\, 60\)
\(650153 \,\, 282\)
\(650155 \,\, 3945\)
\(650208 \,\, 134\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене