(А. Кабанов) Обозначим через \(S\) сумму всех натуральных делителей целого числа, кроме единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(S\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(150000\) в порядке возрастания и ищет среди них такие, для которых значение \(S\) при делении на \(13\) даёт остаток \(10.\) Программа должна найти и первые \(7\) таких чисел. Для каждого из них запишите в отдельной строке сначала само число, затем значение \(S.\) Строки выводятся в порядке возрастания найденных чисел.
Решение:
Python
def sum_div(n):
divs = {d for i in range(2, int(n**0.5) + 1) if n % i == 0
for d in (i, n // i)}
return sum(divs)
q = 0
for x in range(150001, 10**10):
sum_ = sum_div(x)
if sum_ % 13 == 10:
print(x, sum_)
q += 1
if q == 7:
break
Ответ:
\(150016 \,\, 150745\)
\(150024 \,\, 310775\)
\(150048 \,\, 277469\)
\(150108 \,\, 250403\)
\(150139 \,\, 13660\)
\(150144 \,\, 290495\)
\(150146 \,\, 81273\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене