Задание 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\)