📜  检查大量数字是否可被2、3和5整除

📅  最后修改于: 2021-04-27 20:27:25             🧑  作者: Mango

给定一个数字,任务是检查数字是否可以被2、3和5整除。即使我们使用long long int,所以输入数字可能很大,并且可能无法存储,因此该数字被视为字符串。

例子:

Input : str = "725" 
Output : NO

Input : str = "263730746028908374890"
Output : YES

如果数字的最右边数字是偶数,则该数字可被2整除;如果数字的最右边数字是零或五,则该数字也可被5整除。

因此,从上面的两个观察值中,可以得出结论:对于要被2和5整除的数字,该数字的最右边的数字必须为零。

现在,如果数字的总和可被三整除,则该数可被三整除。

因此,如果满足以下条件,则数字可以被2、3和5整除:

  • 其最右边的数字为零。
  • 其所有数字的总和可被3整除。

下面是上述方法的实现:

C++
// CPP program to Check if a large number is
// divisible by 2, 3 and 5 or not.
#include 
using namespace std;
  
// function to return sum of digits of
// a number
int SumOfDigits(string str, int n)
{
    int sum = 0;
  
    for (int i = 0; i < n; i++)
        sum += (int)(str[i] - '0');
  
    return sum;
}
  
// function to Check if a large number is
// divisible by 2, 3 and 5 or not
bool Divisible(string str, int n)
{
    if (SumOfDigits(str, n) % 3 == 0 and str[n - 1] == '0')
        return true;
  
    return false;
}
  
// Driver code
int main()
{
    string str = "263730746028908374890";
  
    int n = str.size();
  
    if (Divisible(str, n))
        cout << "YES";
    else
        cout << "NO";
  
    return 0;
}


Java
// Java program to Check if a large
// number is divisible by 2, 3 and 
// 5 or not.
class GFG
{
// function to return sum of 
// digits of a number
static int SumOfDigits(String str,
                       int n)
{
    int sum = 0;
  
    for (int i = 0; i < n; i++)
        sum += (int)(str.charAt(i) - '0');
  
    return sum;
}
  
// function to Check if a large number 
// is divisible by 2, 3 and 5 or not
static boolean Divisible(String str,
                         int n)
{
    if (SumOfDigits(str, n) % 3 == 0 && 
        str.charAt(n - 1) == '0')
        return true;
  
    return false;
}
  
// Driver code
public static void main(String []args)
{
    String str = "263730746028908374890";
  
    int n = str.length();
  
    if (Divisible(str, n))
        System.out.println("YES");
    else
        System.out.println("NO");
}
}
  
// This code is contributed by ihritik


Python 3
# Python 3 program to Check if 
# a large number is
# divisible by 2, 3 and 5 or not.
  
# function to return sum of digits of
# a number
def SumOfDigits(str, n):
      
    sum = 0
    for i in range(0,n):
        sum += int(ord(str[i] )- ord('0'))
  
    return sum
  
# function to Check if a large number is
# divisible by 2, 3 and 5 or not
def Divisible(str, n):
    if ((SumOfDigits(str, n) % 3 == 0 and 
        str[n - 1] == '0')):
        return True
  
    return False
  
# Driver code
if __name__ == "__main__":
    str = "263730746028908374890"
  
    n = len(str)
  
    if (Divisible(str, n)):
        print("YES")
    else:
        print("NO")
          
# this code is contributed by
# ChitraNayal


C#
// C# program to Check if a large number 
// is divisible by 2, 3 and 5 or not.
using System;
  
class GFG
{
// function to return sum of digits 
// of a number
static int SumOfDigits(String str,
                       int n)
{
    int sum = 0;
  
    for (int i = 0; i < n; i++)
        sum += (int)(str[i] - '0');
  
    return sum;
}
  
// function to Check if a large number 
// is divisible by 2, 3 and 5 or not
static bool Divisible(String str, int n)
{
    if (SumOfDigits(str, n) % 3 == 0 && 
                    str[n - 1] == '0')
        return true;
  
    return false;
}
  
// Driver code
public static void Main()
{
    String str = "263730746028908374890";
  
    int n = str.Length;
  
    if (Divisible(str, n))
        Console.WriteLine("YES");
    else
        Console.WriteLine("NO");
}
}
  
// This code is contributed by ihritik


PHP


输出:
YES