📜  检查较大的数字是否可被36整除

📅  最后修改于: 2021-04-24 14:48:35             🧑  作者: Mango

给定一个数字,请检查给定数字是否可被36整除。该数字可能非常大,并且可能不适合任何数值(int,long int,float等)数据类型。
例子:

Input : 72
Output : Yes

Input : 244
Output : No

Input : 11322134
Output : No

Input : 92567812197966231384
Output : Yes

如果数字可以被4和9整除,则该数字可以被36整除。

  1. 如果数字的后两位数字可被4整除,则该数字可被4整除。
  2. 如果数字的位数之和可被9整除,则该数字可被9整除。

下面是基于以上思想的实现。

C++
// C++ implementation to check divisibility by 36
#include 
using namespace std;
 
// Function to check whether a number
// is divisible by 36 or not
string divisibleBy36(string num)
{
    int l = num.length();
 
    // null number cannot
    // be divisible by 36
    if (l == 0)
        return "No";
 
    // single digit number other than
    // 0 is not divisible by 36
    if (l == 1 && num[0] != '0')
        return "No";
 
    // number formed by the last 2 digits
    int two_digit_num = (num[l-2] - '0')*10 +
                        (num[l-1] - '0') ;
 
    // if number is not divisible by 4
    if (two_digit_num%4 != 0)
        return "No";
 
    // number is divisible by 4 calculate
    // sum of digits
    int sum = 0;
    for (int i=0; i


Java
// Java program to find if a number is
// divisible by 36 or not
class IsDivisible
{
    // Function to check whether a number
    // is divisible by 36 or not
    static boolean divisibleBy36(String num)
    {
        int l = num.length();
      
        // null number cannot
        // be divisible by 36
        if (l == 0)
            return false;
      
        // single digit number other than
        // 0 is not divisible by 36
        if (l == 1 && num.charAt(0) != '0')
            return false;
      
        // number formed by the last 2 digits
        int two_digit_num = (num.charAt(l-2) - '0')*10 +
                            (num.charAt(l-1) - '0') ;
      
        // if number is not divisible by 4
        if (two_digit_num%4 != 0)
            return false;
      
        // number is divisible by 4 calculate
        // sum of digits
        int sum = 0;
        for (int i=0; i


Python3
# Python 3 implementation to
# check divisibility by 36
 
# Function to check whether a
# number is divisible by
# 36 or not
def divisibleBy36(num) :
    l = len(num)
 
    # null number cannot
    # be divisible by 36
    if (l == 0) :
        return ("No")
 
    # single digit number other
    # than 0 is not divisible
    # by 36
    if (l == 1 and num[0] != '0') :
        return ("No")
 
    # number formed by the
    # last 2 digits
    two_digit_num = (((int)(num[l - 2])) *
                    10 +(int)(num[l - 1]))
 
    # if number is not
    # divisible by 4
    if (two_digit_num%4 != 0) :
        return "No"
 
    # number is divisible
    # by 4 calculate sum
    # of digits
    sm = 0
    for i in range(0,l) :
        sm = sm + (int)(num[i])
 
    # sum of digits is not
    # divisible by 9
    if (sm%9 != 0) :
        return ("No")
 
    # Number is divisible
    # by 4 and 9 hence,
    # number is divisible
    # by 36
    return ("Yes")
 
# Driver program
num = "92567812197966231384"
print(divisibleBy36(num))
 
# This code is contributed by Nikita Tiwari.


C#
// C# program to find if a number is
// divisible by 36 or not
using System;
 
class GFG {
     
    // Function to check whether
    // a number is divisible by
    // 36 or not
    static bool divisibleBy36(String num)
    {
        int l = num.Length;
     
        // null number cannot
        // be divisible by 36
        if (l == 0)
            return false;
     
        // single digit number other than
        // 0 is not divisible by 36
        if (l == 1 && num[0] != '0')
            return false;
     
        // number formed by the last
        // 2 digits
        int two_digit_num = (num[l-2] - '0') * 10
                             + (num[l-1] - '0') ;
     
        // if number is not divisible by 4
        if (two_digit_num % 4 != 0)
            return false;
     
        // number is divisible by 4 calculate
        // sum of digits
        int sum = 0;
        for (int i = 0; i < l; i++)
            sum += (num[i] - '0');
     
        // sum of digits is not divisible by 9
        if (sum % 9 != 0)
            return false;
     
        // number is divisible by 4 and 9
        // hence, number is divisible by 36
        return true;
    }
 
    // main function
    public static void Main ()
    {
        String num = "92567812197966231384";
         
        if(divisibleBy36(num))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code is contributed by parashar.


PHP


Javascript


输出:

Yes