Вопрос задан 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)
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

