📌  相关文章
📜  检查N是否为因子

📅  最后修改于: 2021-05-04 15:01:59             🧑  作者: Mango

给定一个整数N ,任务是检查N是否为阶乘。阶乘是等于其数字的阶乘之和的数字。

例子:

方法:创建一个大小为10的数组fact [] ,以存储事实[i]存储i的所有可能数字的阶乘 。现在,对于给定数字的所有数字,使用前面计算的fact []数组找到数字的阶乘和。如果总和等于给定数字,则该数字是分解因子,否则不是。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
#define MAX 10
  
// Function that returns true
// if n is a Factorion
bool isFactorion(int n)
{
  
    // fact[i] will store i!
    int fact[MAX];
    fact[0] = 1;
    for (int i = 1; i < MAX; i++)
        fact[i] = i * fact[i - 1];
  
    // A copy of the given integer
    int org = n;
  
    // To store the sum of factorials
    // of the digits of n
    int sum = 0;
    while (n > 0) {
  
        // Get the last digit
        int d = n % 10;
  
        // Add the factorial of the current
        // digit to the sum
        sum += fact[d];
  
        // Remove the last digit
        n /= 10;
    }
  
    if (sum == org)
        return true;
  
    return false;
}
  
// Driver code
int main()
{
    int n = 40585;
    if (isFactorion(n))
        cout << "Yes";
    else
        cout << "No";
  
    return 0;
}


Java
// Java implementation of the above approach
class GFG 
{
    static int MAX = 10; 
      
    // Function that returns true 
    // if n is a Factorion 
    static boolean isFactorion(int n) 
    { 
        // fact[i] will store i! 
        int fact[] = new int[MAX]; 
          
        fact[0] = 1; 
        for (int i = 1; i < MAX; i++) 
            fact[i] = i * fact[i - 1]; 
      
        // A copy of the given integer 
        int org = n; 
      
        // To store the sum of factorials 
        // of the digits of n 
        int sum = 0; 
        while (n > 0) 
        { 
      
            // Get the last digit 
            int d = n % 10; 
      
            // Add the factorial of the current 
            // digit to the sum 
            sum += fact[d]; 
      
            // Remove the last digit 
            n /= 10; 
        } 
      
        if (sum == org) 
            return true; 
      
        return false; 
    } 
      
    // Driver code 
    public static void main (String[] args)
    { 
        int n = 40585; 
        if (isFactorion(n)) 
            System.out.println("Yes"); 
        else
            System.out.println("No"); 
    } 
}
  
// This code is contributed by AnkitRai01


Python3
# Python3 implementation of the approach 
MAX = 10
  
# Function that returns true 
# if n is a Factorion 
def isFactorion(n) : 
  
    # fact[i] will store i! 
    fact = [0] * MAX
    fact[0] = 1
    for i in range(1, MAX) : 
        fact[i] = i * fact[i - 1] 
  
    # A copy of the given integer 
    org = n 
  
    # To store the sum of factorials 
    # of the digits of n 
    sum = 0
    while (n > 0) : 
  
        # Get the last digit 
        d = n % 10
  
        # Add the factorial of the current 
        # digit to the sum 
        sum += fact[d] 
  
        # Remove the last digit 
        n = n // 10
          
    if (sum == org): 
        return True
  
    return False
  
# Driver code 
n = 40585
  
if (isFactorion(n)): 
    print("Yes") 
else:
    print("No")
      
# This code is contributed by
# divyamohan123


C#
// C# implementation of the above approach
using System;
  
class GFG 
{
    static int MAX = 10; 
      
    // Function that returns true 
    // if n is a Factorion 
    static bool isFactorion(int n) 
    { 
        // fact[i] will store i! 
        int [] fact = new int[MAX]; 
          
        fact[0] = 1; 
        for (int i = 1; i < MAX; i++) 
            fact[i] = i * fact[i - 1]; 
      
        // A copy of the given integer 
        int org = n; 
      
        // To store the sum of factorials 
        // of the digits of n 
        int sum = 0; 
        while (n > 0) 
        { 
      
            // Get the last digit 
            int d = n % 10; 
      
            // Add the factorial of the current 
            // digit to the sum 
            sum += fact[d]; 
      
            // Remove the last digit 
            n /= 10; 
        } 
      
        if (sum == org) 
            return true; 
      
        return false; 
    } 
      
    // Driver code 
    public static void Main (String[] args)
    { 
        int n = 40585; 
        if (isFactorion(n)) 
            Console.WriteLine("Yes"); 
        else
            Console.WriteLine("No"); 
    } 
}
  
// This code is contributed by Mohit kumar


输出:
Yes