Python 程序判断是否为完数

如何使用 For 循环、While 循环和函数编写 Python 程序来判断是否为完数。如果一个数的所有正因子(不包括它本身)之和等于该数,那么这个数就是完数。

例如,6 是 Python 中的一个完数,因为 6 可以被 1、2、3 和 6 整除。所以,这些值的和是 1+2+3 = 6(请记住,我们必须排除它本身。这就是为什么我们没有在此处加上 6)。一些完数是 6、28、496、8128、33550336 等等。

Python 程序使用 For 循环判断是否为完数

此 Python 程序允许用户输入任何数字。使用该数字,它将使用 For 循环计算给定的整数值是否为完数。

#  find Perfect Number using For loop

Number = int(input(" Please Enter any Number: "))
Sum = 0
for i in range(1, Number):
    if(Number % i == 0):
        Sum = Sum + i
if (Sum == Number):
    print(" %d is a Perfect Number" %Number)
else:
    print(" %d is not a Perfect Number" %Number)

在此 Python 完数程序中,以下语句将提示用户输入任何数字,并将用户输入的值存储在 Number 变量中。

Number = int(input(" Please Enter any Number: "))

下一行,我们声明了整数变量 Sum = 0。接下来,我们使用了带 range() 的 for 循环,这里我们不解释 for 循环。如果你不理解 for 循环,请访问我们的文章 Python For 循环

for i in range(1, Number):

在 For 循环内部,我们放置了 Python If 语句来测试条件。

if(Number % i == 0):
        Sum = Sum + i

For 循环内的 If 语句将检查 Number 是否可以被 i 整除。如果数字可以被 i 整除,那么 i 的值将被加到 Sum 中。请参考 If 语句 文章来理解 Python 中的 If 语句。

Python Program to find Perfect Number using For loop

从上面的完数示例中,用户输入的数字是:Number = 6

第一次迭代:对于第一次迭代,Number = 6,Sum = 0,i = 1

If (Number % i == 0)
6 % 1 == 0

If 语句在此处成功,所以:

Sum = Sum + i
Sum = 0 +1 = 1

第二次迭代:对于第二次迭代,Sum 和 i 的值已更改为:Sum = 1,i = 2

If (Number % i == 0)
6 % 2 == 0

If 语句在此处成功,所以:

Sum = Sum + i
Sum = 1 + 2 = 3

第三次迭代:对于此 Python 完数程序的第三次迭代,Sum 和 i 的值已更改为 Sum = 3,i = 3。

If (Number % i == 0)
6 % 3 == 0

If 语句在此处成功,所以:

Sum = Sum + i
Sum = 3 + 3 = 6

对于第四次和第五次迭代,if 条件内的条件将失败。

6 % 4 == 0 (假)

6 % 5 == 0 (假)

因此,编译器将终止 for 循环。

在下一行,我们有一个 If 语句来检查 Sum 变量中的值是否恰好等于给定的 Number。

如果条件 (Sum == Number) 为 TRUE,则将执行下面的 print 语句。

print(" %d is a Perfect Number" %Number)

如果条件 (Sum == Number) 为 FALSE,则将执行下面的 print 语句。

print(" %d is not a Perfect Number" %Number)

对于此示例 (Sum == Number) 为 True。因此,给定的 Number 是完数。

Python 程序使用 While 循环判断是否为完数

此 Python 程序允许用户输入任何数字。使用该数字,它将使用 While 循环计算用户输入是否为完数。

# find Perfect Number using While loop

Number = int(input(" Please Enter any Number: "))
i = 1
Sum = 0
while(i < Number):
    if(Number % i == 0):
        Sum = Sum + i
    i = i + 1
if (Sum == Number):
    print(" %d is a Perfect Number" %Number)
else:
    print(" %d is not the Perfect Number" %Number)

在此示例中,我们没有做任何特别的事情。我们只是用 While 循环替换了上面 Python 程序 中的 For 循环,如果您发现理解 While 循环功能有困难,请参考 Python While 循环 文章。

 Please Enter any Number: 496
 496 is a Perfect Number
>>> 
 Please Enter any Number: 525
 525 is not the Perfect Number

Python 程序使用函数判断是否为完数

此完数程序允许用户输入任何数字。使用该数字,它将使用函数计算该数字是否为完数。

def Perfect_Number(Number):
Sum = 0
for i in range(1, Number):
if(Number % i == 0):
Sum = Sum + i
return Sum

# Taking input from the user
Number = int(input("Please Enter any number: "))
if (Number == Perfect_Number(Number)):
print("\n %d is a Perfect Number" %Number)
else:
print("\n %d is not a Perfect Number" %Number)

如果您观察到上面的代码,在此示例中我们没有做任何特别的事情。我们只是定义了一个新的用户定义函数,并将我们在 For 循环示例中提到的代码添加了进去。

Please Enter any number: 33550336

 33550336 is a Perfect Number
>>> 
Please Enter any number: 54

 54 is not a Perfect Number

在此示例中,我们使用 for 循环和 if 语句来迭代和查找因子。接下来,我们将这些因子分配给一个列表,并使用列表的 sum() 方法来查找总和。

def isPerfectNumber(n):
    divisors = []
    for i in range(1, n):
        if n % i == 0:
            divisors.append(i)

    if n == sum(divisors):
        return True
    else:
        return False

num = int(input("Enter any Value = "))

if isPerfectNumber(num):
    print(num," is a Perfect Number.")
else:
    print(num, " is Not.")
Enter any Value = 28
28  is a Perfect Number.

使用列表推导式查找完数的程序

def isPerfectNumber(n):
    divisors = [i for i in range(1, n) if n % i == 0]
    return sum(divisors)

num = int(input("Enter any Value = "))

if num == isPerfectNumber(num):
    print(num," is a Perfect Number.")
else:
    print(num, " is Not.")
Enter any Value = 225
225  is Not.

我们也可以编写上面的程序

def isPerfectNumber(n):
    divisors = sum([i for i in range(1, n) if n % i == 0])
    return n == divisors

num = int(input("Enter any Value = "))

if isPerfectNumber(num):
    print(num," is a Perfect Number.")
else:
    print(num, " is Not.")
Enter any Value = 496
496  is a Perfect Number.

Python 程序查找 1 到 1000 之间的完数

此程序允许用户输入最小值和最大值。接下来,此程序将查找最小值和最大值之间的完数。

# Perfect Number between 1 to 1000

# Taking input from the user
Minimum = int(input("Please Enter any Minimum Value: "))
Maximum = int(input("Please Enter any Maximum Value: "))

for Number in range(Minimum, Maximum - 1):
Sum = 0
for n in range(1, Number - 1):
if(Number % n == 0):
Sum = Sum + n
# display the result
if(Sum == Number):
print(" %d " %Number)

输出

Please Enter any Minimum Value: 1
Please Enter any Maximum Value: 100
 6 
 28 
>>> 
Please Enter any Minimum Value: 1
Please Enter any Maximum Value: 1000
 6 
 28 
 496 

在此完数程序中,此 For 循环帮助编译器在最小值和最大值变量之间进行迭代,迭代从最小值开始,然后不会超过最大值变量。

for Number in range(Minimum, Maximum):

在 for 循环内部,我们正在检查该数字是否为完数。我们已经在第一个示例中解释了 for 循环的迭代。

使用列表推导式打印 1 到 1000 之间的完数

def isPerfectNumber(n):
    divisors = [i for i in range(1, n) if n % i == 0]
    return n == sum(divisors)

for i in range(1, 1001):
    if isPerfectNumber(i):
        print(i, end= ' ')
6 28 496