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

📅  最后修改于: 2021-04-29 03:15:50             🧑  作者: Mango

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

例子:

Input  : n = 69354
Output : Yes

Input  : n = 234567876799333
Output : No

Input  : n = 3635883959606670431112222
Output : No

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

A number is divisible by 9 if sum of its digits is divisible by 9.

插图:

For example n = 9432
Sum of digits = 9 + 4 + 3 + 2
             = 18
Since sum is divisible by 9,
answer is Yes.

这是如何运作的?

Let us consider 1332, we can write it as
1332 = 1*1000 + 3*100 + 3*10 + 2

The proof is based on below observation:
Remainder of 10i divided by 9 is 1
So powers of 10 only results in remainder 1 
when divided by 9.

Remainder of "1*1000 + 3*100 + 3*10 + 2"
divided by 9 can be written as : 
1*1 + 3*1 + 3*1 + 2 = 9
The above expression is basically sum of
all digits.

Since 9 is divisible by 9, answer is yes.

以下是上述想法的实现。

C++
// C++ program to find if a number is divisible by
// 9 or not
#include
using namespace std;
 
// Function to find that number divisible by 9 or not
int check(string str)
{
    // Compute sum of digits
    int n = str.length();
    int digitSum = 0;
    for (int i=0; i


Java
// Java program to find if a number is
// divisible by 9 or not
class IsDivisible
{
    // Function to find that number
    // is divisible by 9 or not
    static boolean check(String str)
    {
        // Compute sum of digits
        int n = str.length();
        int digitSum = 0;
        for (int i=0; i


Python3
# Python 3 program to
# find if a number is
# divisible by
# 9 or not
 
# Function to find that
# number divisible by 9
# or not
def check(st) :
 
    # Compute sum of digits
    n = len(st)
    digitSum = 0
     
    for i in range(0,n) :
        digitSum = digitSum + (int)(st[i])
 
    # Check if sum of digits
    # is divisible by 9.
    return (digitSum % 9 == 0)
 
# Driver code
st = "99333"
 
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 9 or not.
using System;
 
class GFG {
     
    // Function to find that number
    // is divisible by 9 or not
    static bool check(String str)
    {
         
        // Compute sum of digits
        int n = str.Length;
        int digitSum = 0;
        for (int i = 0; i < n; i++)
            digitSum += (str[i] - '0');
     
        // Check if sum of digits is
        // divisible by 9.
        return (digitSum % 9 == 0);
    }
 
    // main function
    public static void Main ()
    {
        String str = "99333";
        if(check(str))
            Console.Write("Yes");
        else
            Console.Write("No");
    }
}
 
// This code is Contributed by
// nitin mittal.


PHP


Javascript


输出:

Yes