(А. Кабанов) Обозначим через \(F\) целую часть среднего арифметического всех натуральных делителей целого числа, кроме единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(F\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(550000,\) в порядке возрастания и ищет среди них такие, для которых значение \(F\) при делении на \(31\) даёт в остатке \(13.\) Выведите первые \(5\) найденных чисел в порядке возрастания и справа от каждого числа – соответствующее значение \(F.\)
Решение:
Python
def divs(n):
res = {d for i in range(2, int(n**0.5) + 1) if n % i == 0
for d in (i, n // i)}
return res
q = 0
for x in range(550001, 10**10):
d = divs(x)
F = sum(d) // len(d) if d else 0
if F % 31 == 13:
print(x, F)
q += 1
if q == 5:
break
Ответ:
\(550032 \,\, 28285\)
\(550040 \,\, 49117\)
\(550046 \,\, 28905\)
\(550050 \,\, 19419\)
\(550066 \,\, 35725\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене