📌  相关文章
📜  检查数字的总和是否可被其所有数字整除

📅  最后修改于: 2021-05-07 18:41:55             🧑  作者: Mango

给定整数N ,任务是检查给定数字的数字总和是否可被其所有数字整除。如果可分割,则打印“是”,否则打印“否”
例子:

方法:首先找到该数字的总和,然后一一检查,以计算出的总和是否可被该数字的所有数字整除。如果某位数字不能被整除,则打印“否”,否则打印“是”
下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Function that returns true if all the digits
// of n divide the sum of the digits of n
bool isDivisible(long long int n)
{
 
    // Store a copy of the original number
    long long int temp = n;
 
    // Find the sum of the digits of n
    int sum = 0;
    while (n) {
        int digit = n % 10;
        sum += digit;
        n /= 10;
    }
 
    // Restore the original value
    n = temp;
 
    // Check if all the digits divide
    // the calculated sum
    while (n) {
        int digit = n % 10;
 
        // If current digit doesn't
        // divide the sum
        if (sum % digit != 0)
            return false;
 
        n /= 10;
    }
 
    return true;
}
 
// Driver code
int main()
{
    long long int n = 123;
 
    if (isDivisible(n))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}


Java
// Java implementation of the approach
class GFG
{
     
    // Function that returns true if all the digits
    // of n divide the sum of the digits of n
    static boolean isDivisible(long n)
    {
     
        // Store a copy of the original number
        long temp = n;
     
        // Find the sum of the digits of n
        int sum = 0;
        while (n != 0)
        {
            int digit = (int) n % 10;
            sum += digit;
            n /= 10;
        }
     
        // Restore the original value
        n = temp;
     
        // Check if all the digits divide
        // the calculated sum
        while (n != 0)
        {
            int digit = (int)n % 10;
     
            // If current digit doesn't
            // divide the sum
            if (sum % digit != 0)
                return false;
     
            n /= 10;
        }
        return true;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        long n = 123;
     
        if (isDivisible(n))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by AnkitRai01


Python
# Python implementation of the approach
 
# Function that returns true if all the digits
# of n divide the sum of the digits of n
def isDivisible(n):
 
    # Store a copy of the original number
    temp = n
 
    # Find the sum of the digits of n
    sum = 0
    while (n):
        digit = n % 10
        sum += digit
        n //= 10
 
    # Restore the original value
    n = temp
 
    # Check if all the digits divide
    # the calculated sum
    while(n):
        digit = n % 10
 
        # If current digit doesn't
        # divide the sum
        if(sum % digit != 0):
            return False
 
        n //= 10;
 
    return True
 
# Driver code
n = 123
if(isDivisible(n)):
    print("Yes")
else:
    print("No")


C#
// C# implementation of the approach
using System;
 
class GFG
{
     
    // Function that returns true if all the digits
    // of n divide the sum of the digits of n
    static bool isDivisible(long n)
    {
     
        // Store a copy of the original number
        long temp = n;
     
        // Find the sum of the digits of n
        int sum = 0;
        while (n != 0)
        {
            int digit = (int) n % 10;
            sum += digit;
            n /= 10;
        }
     
        // Restore the original value
        n = temp;
     
        // Check if all the digits divide
        // the calculated sum
        while (n != 0)
        {
            int digit = (int)n % 10;
     
            // If current digit doesn't
            // divide the sum
            if (sum % digit != 0)
                return false;
     
            n /= 10;
        }
        return true;
    }
     
    // Driver code
    static public void Main ()
    {
        long n = 123;
     
        if (isDivisible(n))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code is contributed by @tushil.


Python3
# Python implementation of above approach
def getResult(n):
   
    # Converting integer to string
    st = str(n)
     
    # Initialising sum to 0
    sum = 0
    length = len(st)
 
    # Traversing through the string
    for i in st:
 
        # Converting character to int
        sum = sum + int(i)
         
    # Comparing number and sum
    # Traversing again
    for i in st:
       
        # Check if any digit is
        # not dividing the sum
        if(sum % int(i) != 0):
             
            # Return false
            return 'No'
           
    # If any value is not returned
    # then all the digits are dividing the sum
    # SO return true
    return 'Yes'
 
 
# Driver Code
n = 123
 
# passing this number to get result function
print(getResult(n))
 
# this code is contributed by vikkycirus


输出
Yes

时间复杂度: O(log(N))
辅助空间: O(1)

方法2:使用字符串:

  • 我们必须通过采用新变量将给定的数字转换为字符串。
  • 遍历字符串,将每个元素转换为整数并将其加和。
  • 再次遍历字符串
  • 检查总和是否不能被任何一位数字整除
  • 如果为true,则返回False
  • 否则返回True

下面是上述方法的实现:

Python3

# Python implementation of above approach
def getResult(n):
   
    # Converting integer to string
    st = str(n)
     
    # Initialising sum to 0
    sum = 0
    length = len(st)
 
    # Traversing through the string
    for i in st:
 
        # Converting character to int
        sum = sum + int(i)
         
    # Comparing number and sum
    # Traversing again
    for i in st:
       
        # Check if any digit is
        # not dividing the sum
        if(sum % int(i) != 0):
             
            # Return false
            return 'No'
           
    # If any value is not returned
    # then all the digits are dividing the sum
    # SO return true
    return 'Yes'
 
 
# Driver Code
n = 123
 
# passing this number to get result function
print(getResult(n))
 
# this code is contributed by vikkycirus
输出
Yes