Вопрос задан 01.11.2026 в 10:12. Предмет Информатика. Спрашивает Герасимчук Машка.

Решите на языке Python. Совершенным числом называется число, равное сумме своих делителей, меньших его самого. Например, 28 = 1 + 2 + 4 + 7 + 14. Определите, является ли данное натуральное число совершенным. Найдите все совершенные числа на данном отрезке (возможно, стоит применить идею решета Эратосфена).

Перейти к ответам

Ответы на вопрос

Отвечает Каримов Владислав.

Сначала найдём сумму делителей числа, не считая его самого. Если сумма равна числу, оно совершенное.

Проверка одного числа:

def is_perfect(n):
    s = 0
    for d in range(1, n):
        if n % d == 0:
            s += d
    return s == n

n = int(input())
if is_perfect(n):
    print("YES")
else:
    print("NO")

Чтобы найти совершенные числа на отрезке от \(l\) до \(r\), удобно сразу накапливать суммы делителей всех чисел:

l, r = map(int, input().split())
sums = [0] * (r + 1)

for d in range(1, r // 2 + 1):
    for n in range(d * 2, r + 1, d):
        sums[n] += d

for n in range(max(1, l), r + 1):
    if sums[n] == n:
        print(n)

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос