Python中的强数

Python中的强数

在本教程中,我们将学习一个Python程序来判断给定的数字是否是强数。

什么是强数

强数是一种特殊的数字,它的所有位数的阶乘之和应该等于该数字本身。

要判断给定的数字是否是强数,我们从给定的数字中选取每个位数并计算其阶乘,然后对数字的每个位数都进行这个操作。

一旦我们得到了所有位数的阶乘,然后将它们相加。如果相加结果等于给定的数字,则该数字是一个强数,否则不是。

例如 – 给定的数字是145,我们需要选取每个位数并计算其阶乘 1! = 1, 4! = 24和5! = 120。

现在,我们将计算阶乘之和,得到1+24+120= 145,这与给定的数字完全相同。所以我们可以说145是一个强数。

我们已经掌握了强数的逻辑。现在用Python程序来实现它。

解决方案:

  1. 向用户询问输入一个整数。
  2. 使用两个while循环计算该数字中每个位数的阶乘。
  3. 现在,将所有的阶乘数字相加。
  4. 检查是否与给定的数字相等。
  5. 输出。
  6. 退出。

示例输入: num = 132

示例输出: 给定的数字不是一个强数。

解释: 1! + 3! + 2! = 9,不等于132。

示例输入: num = 145

示例输出: 给定的数字是一个强数。

Python程序查找强数

下面是Python程序的代码,用于判断给定的数字是否是强数。

示例:

# Variable to store sum of the numbers
sum=0
# Ask user to enter the number
num=int(input("Enter a number:"))
# temporary variable  store copy of the original number
temp=num
# Using while loop
while(num):
    # intialize with 1
    i=1
    # fact variable with 1
    fact=1
    rem=num%10
    while(i<=rem):
        fact=fact*i   # Find factorial of each number
        i=i+1
    sum=sum+fact
    num=num//10
if(sum==temp):
    print("Given number is a strong number")
else:
    print("Given number is not a strong number")

输出:

Enter a number: 145
Given number is a strong number.

解释:

在上述代码中

  • 我们声明了一个整数变量 num 来输入一个数字。
  • 将和变量定义为零。
  • 将num的副本值赋给临时变量。
  • 在第一个 while循环 中,确保给定的数字大于0。
  • 在while循环中,拆分数字并将变量分配给查找每个数字的阶乘。
  • 在第二个while循环(嵌套while循环)中,找到每个数字的阶乘。

假设用户输入值为145,和为0

分配初始值

i = 0
fact = 0
temp = num
temp = 145

现在理解循环迭代。第一次迭代

rem = temp % 10
rem = 145 % 10 = 5

现在,我们进入了嵌套的while循环。它计算出5的阶乘是120。

sum = sum + 120> 0+120
sum = 120
temp = temp//10 = 14
temp = 14

第二次迭代

temp = 14,
sum = 120
rem = 14 % 10 = 4

现在,它进入了嵌套的While循环。在这里,它计算4的阶乘= 24。

sum = 120 + 24
sum = 144

temp = 14//10   
temp = 1

第三次迭代

temp = 1 
sum = 144
rem = 1 % 10 = 0

1的阶乘是1

sum = 144 + 1
sum = 145
temp = 1 / 10
temp = 0

在这里,temp=0,所以while循环条件不满足。

如果(num == sum)现在,我们检查用户输入的数是否与总和完全相等的条件。如果这个条件返回True,那么它就是强数字,否则它就不是强数字。

我们使用while循环完成了程序。我们还可以使用for循环来判断一个给定的数是否是强数字。

使用for循环的强数字

我们也可以使用for循环来找到强数字。逻辑与上面的程序相同,只是将while循环替换为for循环。

示例

# Python Program to find Strong Number
num = int(input(" Enter the Number:"))
sum = 0
temp = num

while(temp > 0):
    fact = 1
    rem = temp % 10

    for i in range(1, rem + 1):
        fact = fact * i

    print("Factorial of %d = %d" %(rem, fact))
    sum = sum + fact
    temp = temp // 10

print("\n Sum of Factorials of a Given Number %d = %d" %(num, sum))

if (sum == num):
    print(" The given number is a Strong Number")
else:
    print(" The given number is not a Strong Number")

输出:

Enter the Number:145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1
Sum of Factorials of a Given Number 145 = 145
The given number is a Strong Number

使用阶乘函数找到强数的Python程序

Python的math模块 提供了内置的math模块。通过使用这种方法,我们可以省去使用嵌套的while循环。

示例

# Python Program to find Strong Number

import math
num = int(input(" Enter the Number:"))
sum = 0
temp = num

while(temp > 0):
    rem = temp % 10
    fact = math.factorial(rem)  # Using the buitlt-in factorial() function

    print("Factorial of %d = %d" %(rem, fact))
    sum = sum + fact
    temp = temp // 10

print("\n Sum of Factorials of a Given Number %d = %d" %(num, sum))

if (sum == num):
    print(" The given number is a Strong Number")
else:
    print(" The given number is not a Strong Number") 

输出:

Enter the Number: 145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1

 Sum of Factorials of a Given Number 145 = 145
 The given number is a Strong Number

解释 –

在上面的代码中,

  • 我们使用了 factorial() 函数并将一个余数作为参数传递进去。
  • 在while循环的第一次迭代中,它返回了余数5,并传递给了5的阶乘函数。
  • 它会一直进行下去,直到临时值大于零。我们不需要使用另一个while循环。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程