📜  检查给定数字是否除以其数字的阶乘和

📅  最后修改于: 2021-04-21 20:58:18             🧑  作者: Mango

给定整数N ,任务是检查N是否除以其数字的阶乘和。

例子:

方法:首先,将09的所有数字的阶乘存储在数组中。并且,对于给定的数字N,检查是否将其数字的阶乘之和相除。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
  
// Function that returns true if n divides
// the sum of the factorials of its digits
bool isPossible(int n)
{
  
    // To store factorials of digits
    int fac[10];
    fac[0] = fac[1] = 1;
  
    for (int i = 2; i < 10; i++)
        fac[i] = fac[i - 1] * i;
  
    // To store sum of the factorials
    // of the digits
    int sum = 0;
  
    // Store copy of the given number
    int x = n;
  
    // Store sum of the factorials
    // of the digits
    while (x) {
        sum += fac[x % 10];
        x /= 10;
    }
  
    // If it is divisible
    if (sum % n == 0)
        return true;
  
    return false;
}
  
// Driver code
int main()
{
    int n = 19;
  
    if (isPossible(n))
        cout << "Yes";
    else
        cout << "No";
  
    return 0;
}


Java
// Java implementation of the approach 
class GFG 
{
      
    // Function that returns true if n divides 
    // the sum of the factorials of its digits 
    static boolean isPossible(int n) 
    { 
      
        // To store factorials of digits 
        int fac[] = new int[10]; 
        fac[0] = fac[1] = 1; 
      
        for (int i = 2; i < 10; i++) 
            fac[i] = fac[i - 1] * i; 
      
        // To store sum of the factorials 
        // of the digits 
        int sum = 0; 
      
        // Store copy of the given number 
        int x = n; 
      
        // Store sum of the factorials 
        // of the digits 
        while (x != 0) 
        { 
            sum += fac[x % 10]; 
            x /= 10; 
        } 
      
        // If it is divisible 
        if (sum % n == 0) 
            return true; 
      
        return false; 
    } 
      
    // Driver code 
    public static void main (String[] args) 
    { 
        int n = 19; 
      
        if (isPossible(n)) 
            System.out.println("Yes"); 
        else
            System.out.println("No"); 
      
    } 
}
  
// This code is contributed by Ryuga


Python3
# Python 3 implementation of the approach
  
# Function that returns true if n divides
# the sum of the factorials of its digits
def isPossible(n):
      
    # To store factorials of digits
    fac = [0 for i in range(10)]
    fac[0] = 1
    fac[1] = 1
  
    for i in range(2, 10, 1):
        fac[i] = fac[i - 1] * i
  
    # To store sum of the factorials
    # of the digits
    sum = 0
  
    # Store copy of the given number
    x = n
  
    # Store sum of the factorials
    # of the digits
    while (x):
        sum += fac[x % 10]
        x = int(x / 10)
  
    # If it is divisible
    if (sum % n == 0):
        return True
  
    return False
  
# Driver code
if __name__ == '__main__':
    n = 19
  
    if (isPossible(n)):
        print("Yes")
    else:
        print("No")
  
# This code is contributed by
# Surendra_Gangwar


C#
// C# implementation of the approach 
using System;
class GFG 
{
      
    // Function that returns true if n divides 
    // the sum of the factorials of its digits 
    static bool isPossible(int n) 
    { 
      
        // To store factorials of digits 
        int[] fac = new int[10]; 
        fac[0] = fac[1] = 1; 
      
        for (int i = 2; i < 10; i++) 
            fac[i] = fac[i - 1] * i; 
      
        // To store sum of the factorials 
        // of the digits 
        int sum = 0; 
      
        // Store copy of the given number 
        int x = n; 
      
        // Store sum of the factorials 
        // of the digits 
        while (x != 0) 
        { 
            sum += fac[x % 10]; 
            x /= 10; 
        } 
      
        // If it is divisible 
        if (sum % n == 0) 
            return true; 
      
        return false; 
    } 
      
    // Driver code 
    public static void Main () 
    { 
        int n = 19; 
      
        if (isPossible(n)) 
            Console.WriteLine("Yes"); 
        else
            Console.WriteLine("No"); 
    } 
}
  
// This code is contributed by Code_Mech.


PHP


输出:
Yes