🎉 Parabéns! 🎉
Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.
ProgerLib Python para todos
você se esforça para se juntar à secreta "fraternidade dos pitagóricos digitais". Esta antiga sociedade acredita que os números governam o universo, e números especiais, "perfeitos", guardam a chave para a harmonia do mundo. Para provar seu valor, você deve passar no "teste da perfeição".
O programa recebe uma sequência de números naturais como entrada, cada um em uma nova linha. A entrada termina com o número 0. Para cada número inserido (exceto 0), é necessário determinar se ele é perfeito.
Definição: um número perfeito — É um número natural igual à soma de todos os seus divisores próprios (ou seja, todos os divisores positivos, diferentes do próprio número). Por exemplo, para o número 6, seus divisores próprios são 1, 2 e 3. A soma deles é 1 + 2 + 3 = 6, o que significa que 6 — é um número perfeito.
As entradas são fornecidas para a entrada do programa, cada uma em uma nova linha. O último número na sequência é sempre 0. Este número — é um sinal do fim da entrada, e não é necessário processá-lo.
Para cada número da sequência de entrada (exceto 0), o programa deve exibir a palavra "yes" em uma linha separada, se o número for completo, e "no", caso contrário.
6
28
12
1
0
Sim
Sim
Não
não
def is_perfect(n):
"""
Проверяет, является ли число n совершенным.
"""
# Совершенные числа по определению больше 1.
if n <= 1:
return False
# Начинаем сумму с 1, так как 1 - делитель любого числа.
sum_of_divisors = 1
# Ищем делители до квадратного корня из n.
# Это эффективный способ, так как делители ходят парами.
# Например, для 28: (2, 14), (4, 7).
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
sum_of_divisors += i
# Добавляем парный делитель, если он не равен самому корню
if i * i != n:
sum_of_divisors += n // i
# Сравниваем сумму делителей с исходным числом.
return sum_of_divisors == n
# Основной цикл программы
while True:
try:
number = int(input())
# Если ввели 0, завершаем программу.
if number == 0:
break
if is_perfect(number):
print("YES")
else:
print("NO")
except (ValueError, EOFError):
# Обработка некорректного ввода или конца файла
break
🎉 Parabéns! 🎉
Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.
AD
Publicidade
Executando seu código...