Comprobar si un número grande es divisible por 3 o no

Dado un número, la tarea es dividir el número por 3. El número de entrada puede ser grande y puede que no sea posible almacenarlo incluso si usamos long long int.
Ejemplos: 
 

Input  : n = 769452
Output : Yes

Input  : n = 123456758933312
Output : No

Input  : n = 3635883959606670431112222
Output : Yes

Dado que el número de entrada puede ser muy grande, no podemos usar n % 3 para verificar si un número es divisible por 3 o no, especialmente en lenguajes como C/C++. La idea se basa en el siguiente hecho.
 

Un número es divisible por 3 si la suma de sus dígitos es divisible por 3.

Ilustración: 
 

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

¿Como funciona esto? 

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 3 is 1
So powers of 10 only result in value 1.

Remainder of "1*1000 + 3*100 + 3*10 + 2"
divided by 3 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 3, answer is yes.

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

C++

// C++ program to find if a number is divisible by
// 3 or not
#include<bits/stdc++.h>
using namespace std;
 
// Function to find that number divisible by 3 or not
int 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 3.
    return (digitSum % 3 == 0);
}
 
// Driver code
int main()
{
    string str = "1332";
    check(str)?  cout << "Yes" : cout << "No ";
    return 0;
}

Java

// Java program to find if a number is
// divisible by 3 or not
class IsDivisible
{
    // Function to find that number
    // divisible by 3 or not
    static boolean check(String str)
    {
        // Compute sum of digits
        int n = str.length();
        int digitSum = 0;
        for (int i=0; i<n; i++)
            digitSum += (str.charAt(i)-'0');
      
        // Check if sum of digits is
        // divisible by 3.
        return (digitSum % 3 == 0);
    }
 
    // main function
    public static void main (String[] args)
    {
        String str = "1332";
        if(check(str))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

Python3

# Python program to find if a number is
# divisible by 3 or not
 
# Function to find that number
# divisible by 3 or not
def check(num) :
     
    # Compute sum of digits
    digitSum = 0
    while num > 0 :
        rem = num % 10
        digitSum = digitSum + rem
        num = num / 10
         
    # Check if sum of digits is
    # divisible by 3.
    return (digitSum % 3 == 0)
     
# main function
num = 1332
if(check(num)) :
    print ("Yes")
else :
    print ("No")
     
# This code is contributed by Nikita Tiwari.

C#

// C# program to find if a number is
// divisible by 3 or not
using System;
 
class GFG
{
    // Function to find that number
    // divisible by 3 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 3.
        return (digitSum % 3 == 0);
    }
 
    // main function
    public static void Main ()
    {
        string str = "1332";
         
        if(check(str))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to find if a
// number is divisible by
// 3 or not
 
// Function to find that
// number divisible by 3 or not
function check($str)
{
     
    // Compute sum of digits
    $n = strlen($str);
    $digitSum = 0;
    for ($i = 0; $i < $n; $i++)
        $digitSum += ($str[$i] - '0');
 
    // Check if sum of digits
    // is divisible by 3.
    return ($digitSum % 3 == 0);
}
 
// Driver code
$str = "1332";
$x = check($str) ? "Yes" : "No ";
echo($x);
 
// This code is contributed by Ajit.
?>

Javascript

<script>
// Javascript program to find if a
// number is divisible by
// 3 or not
 
// Function to find that
// number divisible by 3 or not
function check(str)
{
     
    // Compute sum of digits
    let n = str.length;
    let digitSum = 0;
    for (let i = 0; i < n; i++)
        digitSum += (str[i] - '0');
 
    // Check if sum of digits
    // is divisible by 3.
    return (digitSum % 3 == 0);
}
 
// Driver code
let str = "1332";
let x = check(str) ? "Yes" : "No ";
document.write(x);
 
// This code is contributed by _saurabh_jaiswal.
</script>
Producción

Yes

Complejidad de tiempo : O (logn), donde n es el número dado.

Espacio auxiliar: O(1), ya que no estamos utilizando ningún espacio adicional. 

Método 2: comprobar que el número dado es divisible por 3 o no mediante el operador de división de módulo «%». 

Python3

# Python code
# To check whether the given number is divisible by 3 or not
 
#input
n=769452
# the above input can also be given as n=input() -> taking input from user
# finding given number is divisible by 3 or not
if int(n)%3==0:
  print("Yes")
else:
  print("No")
 
  # this code is contributed by gangarajula laxmi

C#

using System;
 
public class GFG{
 
  static public void Main (){
 
    //input
    long n = 769452;
 
    // the above input can also be given as n=input() -> taking input from user
    // finding given number is divisible by 7 or not
    if (n % 3 == 0)
    {
      Console.Write("Yes");
    }
    else
    {
      Console.Write("No");
    } 
 
  }
}
 
// This code is contributed by laxmigangarajula03

Javascript

<script>
        // JavaScript code for the above approach
        // To check whether the given number is divisible by 3 or not
 
        //input
        var n = 769452
        
        // finding given number is divisible by 3 or not
        if (n % 3 == 0)
            document.write("Yes")
        else
            document.write("No")
 
    // This code is contributed by Potta Lokesh
    </script>
Producción

Yes

Este artículo es una contribución de DANISH_RAZA . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *