Задание 25. Информатика. ЕГЭ. Шастин. 19.09.2024
- Просмотры: 205
- Изменено: 24 ноября 2024
(Л. Шастин) Пусть \(S\) — сумма всех делителей целого числа. Например, для числа \(12\) значение \(S = 1 + 2 + 3 + 4 + 6 + 12 = 28\). Напишите программу, которая перебирает все четырёхзначные числа и ищет среди них такие, для которых \(S\) оканчивается на \(23\). В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им значения \(S\).
Количество строк в таблице для ответа избыточно.
Решение:
Python
def sum_divisors(n):
divisors = set()
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
divisors.add(i)
divisors.add(n // i)
return sum(divisors)
for n in range(1000, 10_000):
s = sum_divisors(n)
if s % 100 == 23:
print(n, s)
Ответ:
\(1681 \,\, 1723\)
\(1936 \,\, 4123\)
\(2592 \,\, 7623\)
\(3025 \,\, 4123\)
\(6962 \,\, 10623\)
\(7569 \,\, 11323\)