Python 程序查找强数

使用 While 循环、For 循环和阶乘函数编写一个 Python 程序来查找强数,并附带示例。

Python 程序使用 While 循环查找强数

这个强数程序允许用户输入任何正整数。接下来,该程序使用 While 循环检查给定的数字是否是强数。

Number = int(input(" Please Enter any Number: "))
Sum = 0
Temp = Number

while(Temp > 0):
    Factorial = 1
    i = 1
    Reminder = Temp % 10

    while(i <= Reminder):
        Factorial = Factorial * i
        i = i + 1

    print("\n Factorial of %d = %d" %(Reminder, Factorial))
    Sum = Sum + Factorial
    Temp = Temp // 10

print("\n Sum of Factorials of a Given %d = %d" %(Number, Sum))
    
if (Sum == Number):
    print(" %d is a Strong Number" %Number)
else:
    print(" %d is not" %Number)
Python Program to find Strong Number

在这个查找强数的 Python 程序示例中,首先,我们将原始值赋给 Temp 变量。这有助于我们保留原始值。

第一个 While 循环 确保给定的数字大于 0。while 循环内的语句拆分数字并查找给定数字中各个数字的阶乘。请参阅 Python 计算数字位数 文章以了解其逻辑。

第二个 While 循环(嵌套的)查找每个数字的阶乘。我建议您参考 Python 查找阶乘 文章以了解阶乘背后的逻辑。

用户输入的查找强数程序的数值 = 145,Sum = 0。
Factorial = 1, i = 1
Temp = Number
Temp = 145

第一个 While 循环 – 第一次迭代
Reminder = Temp % 10
Reminder = 145 % 10 = 5

现在,它进入 Python 内部或嵌套的 While 循环。这里,它计算 5 的阶乘 = 120。

Sum = Sum +120 => 0 + 120
Sum = 120

Temp = Temp //10 => 145 //10
Temp = 14

第二次迭代
Temp = 14 and Sum = 120
Reminder = 14 % 10 = 4

现在,它进入内部 While 循环。这里,强数程序计算 4 的阶乘 = 24。

Sum = 120 + 24
Sum = 144

Temp = 14 /10
Temp = 1

第三次迭代
Temp = 1 and Sum = 144
Reminder = 1 % 10 = 0

这里,1 的阶乘是 1
Sum = 144 + 1
Sum = 145

Temp = 1 / 10
Temp = 0

这里 Temp = 0,所以 while 循环条件失败。

if ( Number == Sum ) – 检查用户输入的数字是否等于 Sum。如果此条件为 True,则为强数。否则,不是。

Python 程序使用 For 循环查找强数

此强数程序与上面相同。在此 程序 中,我们将 While 循环替换为 For 循环

Number = int(input(" Please Enter any Number: "))
Sum = 0
Temp = Number

while(Temp > 0):
    Factorial = 1
    Reminder = Temp % 10

    for i in range(1, Reminder + 1):
        Factorial = Factorial * i

    print("Factorial of %d = %d" %(Reminder, Factorial))
    Sum = Sum + Factorial
    Temp = Temp // 10

print("\n Sum of Factorials %d = %d" %(Number, Sum))
    
if (Sum == Number):
    print(" %d is a Strong Number" %Number)
else:
    print(" %d is not" %Number)
 Please Enter any Number: 40585
Factorial of 5 = 120
Factorial of 8 = 40320
Factorial of 5 = 120
Factorial of 0 = 1
Factorial of 4 = 24

 Sum of Factorials 40585 = 40585
 40585 is a Strong Number

Python 程序使用阶乘函数查找强数

此强数程序与第一个示例相同。但是,我们使用了一个内置的 math 函数 称为 factorial 来查找 factorial。这种方法消除了嵌套的 while 循环。

import math 
Number = int(input(" Please Enter any Number: "))
Sum = 0
Temp = Number

while(Temp > 0):
    Reminder = Temp % 10
    Factorial = math.factorial(Reminder)

    print("Factorial of %d = %d" %(Reminder, Factorial))
    Sum = Sum + Factorial
    Temp = Temp // 10

print("\n Sum of Factorials %d = %d" %(Number, Sum))
    
if (Sum == Number):
    print(" %d is a Strong Number" %Number)
else:
    print(" %d is not" %Number)
 Please Enter any Number: 145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1

 Sum of Factorials 145 = 145
 145 is a Strong Number

使用列表推导式

此程序代码使用列表推导式和 math factorial 函数来检查和查找强数。

import math

def isStrongNumber(num):
    digits  = list(map(int, str(num)))
    tot = sum(math.factorial(d) for d in digits)
    return tot

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

if (num == isStrongNumber(num)):
    print(num, " is a Strong Number.")
else:
    print(num, " is not.")
Enter any Number: 145
145  is a Strong Number.

使用递归检查强数的程序

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

def  isStrongNumber(num):
    digits  = list(map(int, str(num)))
    tot = sum([factorial(i)for i in digits])
    return tot

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

if (num == isStrongNumber(num)):
    print(num, " is a Strong Number.")
else:
    print(num, " is not.")
Enter any Number: 153
153  is not.

使用 lambda 和 reduce 函数

在此示例中,首先,我们必须从 functools 导入 reduce 函数并连接多个 lambda 语句。

from functools import reduce

def  isStrongNumber(num):
    digits  = list(map(int, str(num)))
    tot = reduce(lambda x, y: x + y, [reduce(lambda x, y:x * y, range(1, d + 1)) for d in digits])
    return tot

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

if (num == isStrongNumber(num)):
    print(num, " is a Strong Number.")
else:
    print(num, " is not.")
Enter any Number: 225
225  is not.