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>
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