Programa para comprobar si hay un número IMEI válido

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: 

  1. 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).
  2. 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. .
  3. Ahora toma la suma de todos los dígitos.
  4. 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>
Producción

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

Deja una respuesta

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