• 1
    数据输入输出
    • 任务
  • 2
    条件语句
    • 任务
  • 3
    for循环
    • 任务
  • 4
    字符串
    • 任务
  • 5
    while循环
    • 任务
  • 6
    列表
    • 任务
  • 7
    二维数组
    • 任务
  • 8
    字典
    • 任务
  • 9
    集合
    • 任务
  • 10
    函数与递归
    • 任务
  • к

课程 5. While cycle

难度:

任务«完美数»

💻 Python

你渴望加入神秘的“数字毕达哥拉斯兄弟会”。这个古老的社团相信数字统治着宇宙,而特殊的“完美”数字则掌握着世界和谐的关键。为了证明你的价值,你必须通过“完美测试”。

程序接收一系列自然数作为输入,每个数占一行。输入以数字0结束。对于每个输入的数字(0除外),需要判断它是否为完美数。

说明: 完美数是指一个自然数,它等于其所有真因数(即除了自身以外的所有正因数)之和。例如,数字6的真因数为1、2和3,它们的和为1 + 2 + 3 = 6,因此6是一个完美数。

输入格式

程序输入中提供了一系列条目,每个条目占一行。序列中的最后一个数字始终为0。该数字表示输入结束,无需对其进行处理。

输出格式

对于输入序列中的每个数字(0除外),程序必须在单独一行中输出单词"yes"(如果该数字是完整的),否则输出"no"。

示例

输入

6
28
12
1
0

输出

是
是
否
否

提示

There will be no clue here, decide for yourself!

main.py
测试 1
测试 2
测试 3
测试 4
测试 5
测试 6
测试 7
测试 8
测试 9
测试 10
开发者解答
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

🎉 恭喜! 🎉

你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。

AD

广告

red-snake blue-snake green-snake

正在运行代码...

AI助手

你好!我是你的编程助手。随时向我提问关于 Python 的问题——我可以解释函数、方法,并帮助你完成当前任务!