Comprobar si un número grande es divisible por 2, 3 y 5 o no

Dado un número, la tarea es verificar si un número es divisible por 2, 3 y 5 o no. El número de entrada puede ser grande y puede que no sea posible almacenarlo incluso si usamos long long int, por lo que el número se toma como una string.
Ejemplos: 
 

Input : str = "725" 
Output : NO

Input : str = "263730746028908374890"
Output : YES

Un número es divisible por 2 si su dígito más a la derecha es par y también un número es divisible por 5 si su dígito más a la derecha es cero o cinco.
Entonces, de las dos observaciones anteriores, se puede concluir que para que el número sea divisible por 2 y 5, el dígito más a la derecha del número debe ser cero.
Ahora bien, un número es divisible por 3 si la suma de sus dígitos es divisible por tres.
Por lo tanto, un número será divisible por todos los 2, 3 y 5 si: 
 

  • Su dígito más a la derecha es cero.
  • La suma de todas sus cifras es divisible por 3.

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// CPP program to Check if a large number is
// divisible by 2, 3 and 5 or not.
#include <bits/stdc++.h>
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;
}

C

// C program to Check if a large number is
// divisible by 2, 3 and 5 or not.
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
 
// function to return sum of digits of
// a number
int SumOfDigits(char 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(char str[], int n)
{
    if (SumOfDigits(str, n) % 3 == 0 && str[n - 1] == '0')
        return true;
 
    return false;
}
 
// Driver code
int main()
{
    char str[] = "263730746028908374890";
 
    int n = strlen(str);
 
    if (Divisible(str, n))
        printf("YES");
    else
        printf("NO");
 
    return 0;
}
 
// This code is contributed by kothavvsaakash.

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

<?php
// PHP 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
function SumOfDigits($str, $n)
{
    $sum = 0;
 
    for ($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
function Divisible($str, $n)
{
    if (SumOfDigits($str, $n) % 3 == 0 and
                    $str[$n - 1] == '0')
        return true;
 
    return false;
}
 
// Driver code
$str = "263730746028908374890";
 
$n = strlen($str);
 
if (Divisible($str, $n))
    echo "YES";
else
    echo "NO";
 
// This code is contributed
// by Shivi_Aggarwal
?>

Javascript

<script>
 
// JavaScript 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
function SumOfDigits(str, n)
{
    var sum = 0;
 
    for(var i = 0; i < n; i++)
        sum += (str.charAt(i) - '0');
 
    return sum;
}
 
// Function to Check if a large number
// is divisible by 2, 3 and 5 or not
function Divisible(str, n)
{
    if (SumOfDigits(str, n) % 3 == 0 &&
        str.charAt(n - 1) == '0')
        return true;
 
    return false;
}
 
// Driver code
var str = "263730746028908374890";
var n = str.length;
 
if (Divisible(str, n))
    document.write("YES");
else
    document.write("NO");
 
// This code is contributed by Ankita saini
 
</script>
Producción: 

YES

 

Complejidad de tiempo: O(n), donde n es el tamaño de la string dada str
Espacio auxiliar: O(1), ya que no se requiere espacio adicional
 

Publicación traducida automáticamente

Artículo escrito por pawan_asipu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *