【问题标题】:Creating a function that checks perfect numbers python创建一个检查完美数python的函数
【发布时间】:2021-10-30 02:41:16
【问题描述】:

我一直在尝试创建一个检查完美数字的函数,我使用了我在这里找到的许多资源,但由于某种原因它们似乎不起作用。在我的作业中,我需要在给定的范围输入中找到不同类型的数字,但这是唯一不能正常工作的功能。这就是我所拥有的:

def is_perfect(a): #creates a perfect number checker
    sum=0
    for i in range(1,a):
        if a%1==0:
            sum += i
    if sum==a:
        return True
    else:
        return False

【问题讨论】:

标签: python python-3.x perfect-numbers


【解决方案1】:

将行从a%1==0 更改为a%i==0,您的代码将完美运行。因为您必须检查该数字是否可从 1 整除到 a 而不仅仅是 1。它将始终返回 True 直到它不是整数。因此,它将继续将所有从 1 的 no 添加到 a

【讨论】:

    【解决方案2】:

    完美数是除自身之外的除数之和等于该数的任何数。就像数字 6 除以 1、2 和 3 和 1 + 2 + 3 = 6。

    def is_perfect(number):
        sum_ = sum([x for x in range(1, number) if number % x == 0])
        return sum_ == number
    
    is_perfect(6)  # Returns True
    is_perfect(10) # Returns False
    is_perfect(28) # Returns True
    

    我用下划线调用了对所有除数求和的变量,因为sum 在 Python 中已经是一个函数关键字

    【讨论】:

      【解决方案3】:
      def isPerfect( n ):
          sum = 1
          i = 2
          while i * i <= n:
              if n % i == 0:
                  sum = sum + i + n/i
              i += 1
           
          # If sum of divisors is equal to
          # n, then n is a perfect number
           
          return (True if sum == n and n!=1 else False)
      

      【讨论】:

      猜你喜欢
      • 2021-02-26
      • 2017-01-09
      • 2011-09-27
      • 2015-11-06
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      相关资源
      最近更新 更多