📜  检查大数是否可以被4整除

📅  最后修改于: 2021-05-04 09:46:23             🧑  作者: Mango

给定一个数字,任务是检查一个数字是否可被4整除。输入数字可能很大,即使我们使用long long int,也可能无法存储。

例子:

Input : n = 1124
Output : Yes

Input  : n = 1234567589333862
Output : No

Input  : n = 363588395960667043875487
Output : No

由于输入数字可能很大,因此我们不能使用n%4来检查数字是否可以被4整除,尤其是在C / C++之类的语言中。这个想法是基于以下事实。

插图:

For example, let us consider 76952 
Number formed by last two digits = 52
Since 52 is divisible by 4, answer is YES.

这是如何运作的?

Let us consider 76952, we can write it as
76942 = 7*10000 + 6*1000 + 9*100 + 5*10 + 2

The proof is based on below observation:
Remainder of 10i divided by 4 is 0 if i greater 
than or equal to two. Note than 100, 1000,
... etc lead to remainder 0 when divided by 4.

So remainder of "7*10000 + 6*1000 + 9*100 + 
5*10 + 2" divided by 4 is equivalent to remainder 
of following : 
0 + 0 + 0 + 5*10 + 2 = 52
Therefore we can say that the whole number is 
divisible by 4 if 52 is divisible by 4.

以下是上述想法的实现:

C++
// C++ program to find if a number is divisible by
// 4 or not
#include 
using namespace std;
 
// Function to find that number divisible by
// 4 or not
bool check(string str)
{
    int n = str.length();
 
    // Empty string
    if (n == 0)
        return false;
 
    // If there is single digit
    if (n == 1)
        return ((str[0] - '0') % 4 == 0);
 
    // If number formed by last two digits is
    // divisible by 4.
    int last = str[n - 1] - '0';
    int second_last = str[n - 2] - '0';
    return ((second_last * 10 + last) % 4 == 0);
}
 
// Driver code
int main()
{
    string str = "76952";
   
    // Function call
    check(str) ? cout << "Yes" : cout << "No ";
    return 0;
}


Java
// Java program to find if a number is
// divisible by 4 or not
class IsDivisible
{
    // Function to find that number
    // is divisible by 4 or not
    static boolean check(String str)
    {
        int n = str.length();
 
        // Empty string
        if (n == 0)
            return false;
 
        // If there is single digit
        if (n == 1)
            return ((str.charAt(0) - '0') % 4 == 0);
 
        // If number formed by last two digits is
        // divisible by 4.
        int last = str.charAt(n - 1) - '0';
        int second_last = str.charAt(n - 2) - '0';
        return ((second_last * 10 + last) % 4 == 0);
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String str = "76952";
       
        // Function call
        if (check(str))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}


Python3
# Python 3 program to find
# if a number is divisible
# by 4 or not
 
# Function to find that
# number divisible by
# 4 or not
 
 
def check(st):
    n = len(st)
 
    # Empty string
    if (n == 0):
        return False
 
    # If there is single
    # digit
    if (n == 1):
        return ((st[0] - '0') % 4 == 0)
 
    # If number formed by
    # last two digits is
    # divisible by 4.
    last = (int)(st[n - 1])
    second_last = (int)(st[n - 2])
 
    return ((second_last * 10 + last) % 4 == 0)
 
 
# Driver code
st = "76952"
 
# Function call
if(check(st)):
    print("Yes")
else:
    print("No ")
 
# This code is contributed by Nikita tiwari


C#
// C# program to find if a number is
// divisible by 4 or not
using System;
 
class GFG
{
    // Function to find that number
    // is divisible by 4 or not
    static bool check(String str)
    {
        int n = str.Length;
 
        // Empty string
        if (n == 0)
            return false;
 
        // If there is single digit
        if (n == 1)
            return ((str[0] - '0') % 4 == 0);
 
        // If number formed by last two
        // digits is divisible by 4.
        int last = str[n - 1] - '0';
        int second_last = str[n - 2] - '0';
 
        return ((second_last * 10 + last) % 4 == 0);
    }
 
    // Driver code
    public static void Main()
    {
        String str = "76952";
 
        // Function call
        if (check(str))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code is Contributed by nitin mittal.


PHP


Javascript
//Javascript program to check whether a string is divisible by 4 or not
 
// function to check the divisibility
function check(str)
{ 
      // checking the length for future reference
      var n = str.length;
 
      // if it is empty then directly returning false
      if( n == 0)
      {        
           return false;
      }
  
      if( n == 1)
      {
           return ((str[0] -'0') % 4 == 0);
      }
      var lastNumber = str[n-1] -'0';
      var lastSecondNUmber = str[n-2] -'0';
      return ((lastSecondNUmber * 10  + lastNumber) % 4 == 0);   
}
 
// Driver code
var str="76952";
 
//checking the value by passing it into the function
// Function call
if(check(str)){
  console.log("Yes");
}
else{
  console.log("No");
}


输出
Yes