给定一个数字,任务是查找数字是否可以被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