La Identidad Internacional de Equipo Móvil (IMEI) es un número, generalmente único, para identificar teléfonos móviles, así como algunos teléfonos satelitales. Por lo general, se encuentra impreso dentro del compartimiento de la batería del teléfono, pero también se puede mostrar en la pantalla en la mayoría de los teléfonos ingresando *#06# en el teclado de marcación, o junto con otra información del sistema en el menú de configuración en los sistemas operativos de los teléfonos inteligentes. El número IMEI es utilizado por una red GSM para identificar dispositivos válidos y, por lo tanto, puede usarse para evitar que un teléfono robado acceda a esa red.
El IMEI (15 dígitos decimales: 14 dígitos más un dígito de control) incluye información sobre el origen, modelo y número de serie del dispositivo.
El IMEI se valida en los siguientes pasos:
- Comenzando desde el dígito más a la derecha, duplique el valor de cada segundo dígito (p. ej., 7 se convierte en 14).
- Si la duplicación de un número da como resultado un número de dos dígitos, es decir, mayor que 9 (p. ej., 7 × 2 = 14), entonces sume los dígitos del producto (p. ej., 14: 1 + 4 = 5), para obtener un número de un solo dígito. .
- Ahora toma la suma de todos los dígitos.
- Compruebe si la suma es divisible por 10, es decir (el módulo total 10 es igual a 0), entonces el número IMEI es válido; de lo contrario no es válido.
Ejemplo:
Input IMEI : 490154203237518
Output : Since, 60 is divisible by 10, hence the given IMEI number is Valid.
Implementación:
C++
// C++ program to check whether the // given EMEI number is valid or not. #include<bits/stdc++.h> using namespace std; // Function for finding and returning // sum of digits of a number int sumDig(int n) { int a = 0; while (n > 0) { a = a + n % 10; n = n / 10; } return a; } bool isValidIMEI(long n) { // Converting the number into // String for finding length string s = to_string(n); int len = s.length(); if (len != 15) return false; int sum = 0; for(int i = len; i >= 1; i--) { int d = (int)(n % 10); // Doubling every alternate digit if (i % 2 == 0) d = 2 * d; // Finding sum of the digits sum += sumDig(d); n = n / 10; } return (sum % 10 == 0); } // Driver code int main() { // 15 digits cannot be stored // in 'int' data type long n = 490154203237518L; if (isValidIMEI(n)) cout << "Valid IMEI Code"; else cout << "Invalid IMEI Code"; return 0; } // This code is contributed by Yash_R
Java
// Java program to check whether the // given EMEI number is valid or not. import java.io.*; class IMEI { // Function for finding and returning // sum of digits of a number static int sumDig(int n) { int a = 0; while (n > 0) { a = a + n % 10; n = n / 10; } return a; } static boolean isValidIMEI(long n) { // Converting the number into String // for finding length String s = Long.toString(n); int len = s.length(); if (len != 15) return false; int sum = 0; for (int i = len; i >= 1; i--) { int d = (int)(n % 10); // Doubling every alternate digit if (i % 2 == 0) d = 2 * d; // Finding sum of the digits sum += sumDig(d); n = n / 10; } return (sum % 10 == 0); } // Driver code public static void main(String args[]) throws IOException { // 15 digits cannot be stored in 'int' data type long n = 490154203237518L; if (isValidIMEI(n)) System.out.println("Valid IMEI Code"); else System.out.println("Invalid IMEI Code"); } }
Python3
# Python3 code to check whether the # given EMEI number is valid or not # Function for finding and returning # sum of digits of a number def sumDig( n ): a = 0 while n > 0: a = a + n % 10 n = int(n / 10) return a # Returns True if n is valid EMEI def isValidEMEI(n): # Converting the number into # String for finding length s = str(n) l = len(s) # If length is not 15 then IMEI is Invalid if l != 15: return False d = 0 sum = 0 for i in range(15, 0, -1): d = (int)(n % 10) if i % 2 == 0: # Doubling every alternate digit d = 2 * d # Finding sum of the digits sum = sum + sumDig(d) n = n / 10 return (sum % 10 == 0) # Driver code n = 490154203237518 if isValidEMEI(n): print("Valid IMEI Code") else: print("Invalid IMEI Code") # This code is contributed by "Sharad_Bhardwaj".
C#
// C# program to check whether the // given EMEI number is valid or not. using System; class GFG { // Function for finding and // returning sum of digits // of a number static int sumDig(int n) { int a = 0; while (n > 0) { a = a + n % 10; n = n / 10; } return a; } static Boolean isValidIMEI(long n) { // Converting the number into // String for finding length String s = n.ToString(); int len = s.Length; if (len != 15) return false; int sum = 0; for (int i = len; i >= 1; i--) { int d = (int)(n % 10); // Doubling every alternate // digit if (i % 2 == 0) d = 2 * d; // Finding sum of the digits sum += sumDig(d); n = n / 10; } return (sum % 10 == 0); } // Driver code public static void Main() { // 15 digits cannot be stored in // 'int' data type long n = 490154203237518L; if (isValidIMEI(n)) Console.Write("Valid IMEI Code"); else Console.Write("Invalid IMEI Code"); } } // This code is contributed by parashar.
Javascript
<script> // javascript program to check whether the // given EMEI number is valid or not. // Function for finding and returning // sum of digits of a number function sumDig(n) { let a = 0; while (n > 0) { a = a + n % 10; n = parseInt(n / 10, 10); } return a; } function isValidIMEI(n) { // Converting the number into // String for finding length let s = n.toString(); let len = s.length; if (len != 15) return false; let sum = 0; for(let i = len; i >= 1; i--) { let d = (n % 10); // Doubling every alternate digit if (i % 2 == 0) d = 2 * d; // Finding sum of the digits sum += sumDig(d); n = parseInt(n / 10, 10); } return (sum % 10 == 0); } // 15 digits cannot be stored // in 'int' data type let n = 490154203237518; if (isValidIMEI(n)) document.write("Valid IMEI Code"); else document.write("Invalid IMEI Code"); // This code is contributed by vaibhavrabadiya117. </script>
Valid IMEI Code
Complejidad temporal: O(n log 10 n)
Espacio auxiliar: O(n)
Este artículo es una contribución de Aarti_Rathi . 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.
Publicación traducida automáticamente
Artículo escrito por Anshika Goyal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA