在本教程中,我们将学习一个Python程序,用于判断给定的数字是否是阶乘和数。

什么是阶乘和数?

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

要判断给定的数字是否是阶乘和数,我们需要从给定的数字中提取每个数字并找到其阶乘,然后对数字的每个位数都这样操作。

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

例如 - 给定的数字是145,我们需要提取每个数字并找到阶乘,1! = 1,4! = 24,5! = 120。

现在,我们将这些阶乘相加,得到1+24+120 = 145,这恰好等于给定的数字。所以我们可以说145是一个强数。

我们已经理解了强数的逻辑。现在让我们使用Python程序来实现它。

问题解决方法

Ask the user to enter an integer number.
Find the factorial of each digit in the number using the two while loop.
Now, sum up all the factorial number.
Check if it is equal to the given number.
Print the Output.
Exit
Sample Input: num = 132

Sample Output: Given number is not a strong number

Explanation: 1! + 3! + 2! = 9 which is not equal to the 132

Sample Input: num = 145

Sample Output: Given number is a strong number.

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的变量来输入数字。
  • 将sum变量初始化为零。
  • 一个副本的num值存储在temp变量中。
  • 在第一个while循环中,确保给定数字大于0。
  • 在while循环内部,拆分数字并将变量赋值给找到每个数字的阶乘。
  • 在第二个while循环中(嵌套的while循环),找到每个数字的阶乘。

假设用户输入值=145,sum=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),现在,我们检查用户输入的数字是否与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的阶乘。
  • 它将继续,直到temp值大于零。我们不需要使用另一个while循环。

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程