Program to check for a Valid IMEI Number - GeeksforGeeks

02 Jun, 2021
International Mobile Equipment Identity (IMEI) is a number, usually unique, to identify mobile phones, as well as some satellite phones. It is usually found printed inside the battery compartment of the phone, but can also be displayed on-screen on most phones by entering *#06# on the dialpad, or alongside other system information in the settings menu on smartphone operating systems. The IMEI number is used by a GSM network to identify valid devices and therefore can be used for stopping a stolen phone from accessing that network. Source: WikipediaThe IMEI (15 decimal digits: 14 digits plus a check digit) includes information on the origin, model, and serial number of the device. The IMEI is validated in following steps:  
Starting from the rightmost digit, double the value of every second digit (e.g., 7 becomes 14).If doubling of a number results in a two digits number i.e greater than 9(e.g., 7 × 2 = 14), then add the digits of the product (e.g., 14: 1 + 4 = 5), to get a single digit number.Now take the sum of all the digits.Check if the sum is divisible by 10 i.e.(total modulo 10 is equal to 0) then the IMEI number is valid; else it is not valid.
Starting from the rightmost digit, double the value of every second digit (e.g., 7 becomes 14).
If doubling of a number results in a two digits number i.e greater than 9(e.g., 7 × 2 = 14), then add the digits of the product (e.g., 14: 1 + 4 = 5), to get a single digit number.
Now take the sum of all the digits.
Check if the sum is divisible by 10 i.e.(total modulo 10 is equal to 0) then the IMEI number is valid; else it is not valid.
Example:
Input IMEI : 490154203237518
Output : Since, 60 is divisible by 10, hence the given IMEI number is Valid.
C++
Java
Python3
C#
Javascript
// 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 numberint 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 codeint 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 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 code to check whether the# given EMEI number is valid or not # Function for finding and returning# sum of digits of a numberdef sumDig( n ):    a = 0    while n > 0:        a = a + n % 10        n = int(n / 10)     return a # Returns True if n is valid EMEIdef isValidEMEI(n):     # Converting the number into    # Sting 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 coden = 490154203237518if isValidEMEI(n):    print("Valid IMEI Code")else:    print("Invalid IMEI Code") # This code is contributed by "Sharad_Bhardwaj".
// 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.
<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>
Output:
Valid IMEI Code 
 
parashar
Yash_R
vaibhavrabadiya117
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Top 50 String Coding Problems for Interviews
Print all the duplicates in the input string
Vigenère Cipher
sprintf() in C
String class in Java | Set 1
Convert character array to string in C++
Print all subsequences of a string
Program to count occurrence of a given character in a string
How to Append a Character to a String in C
Naive algorithm for Pattern Searching