Program to check for a Valid IMEI Number
Last Updated :
28 Jul, 2022
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.
The 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.
Example:
Input IMEI : 490154203237518
Output : Since, 60 is divisible by 10, hence the given IMEI number is Valid.
Implementation:
C++
#include<bits/stdc++.h>
using namespace std;
int sumDig( int n)
{
int a = 0;
while (n > 0)
{
a = a + n % 10;
n = n / 10;
}
return a;
}
bool isValidIMEI( long n)
{
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);
if (i % 2 == 0)
d = 2 * d;
sum += sumDig(d);
n = n / 10;
}
return (sum % 10 == 0);
}
int main()
{
long n = 490154203237518L;
if (isValidIMEI(n))
cout << "Valid IMEI Code" ;
else
cout << "Invalid IMEI Code" ;
return 0;
}
|
Java
import java.io.*;
class IMEI
{
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)
{
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 );
if (i % 2 == 0 )
d = 2 * d;
sum += sumDig(d);
n = n / 10 ;
}
return (sum % 10 == 0 );
}
public static void main(String args[]) throws IOException
{
long n = 490154203237518L;
if (isValidIMEI(n))
System.out.println( "Valid IMEI Code" );
else
System.out.println( "Invalid IMEI Code" );
}
}
|
Python3
def sumDig( n ):
a = 0
while n > 0 :
a = a + n % 10
n = int (n / 10 )
return a
def isValidEMEI(n):
s = str (n)
l = len (s)
if l ! = 15 :
return False
d = 0
sum = 0
for i in range ( 15 , 0 , - 1 ):
d = ( int )(n % 10 )
if i % 2 = = 0 :
d = 2 * d
sum = sum + sumDig(d)
n = n / 10
return ( sum % 10 = = 0 )
n = 490154203237518
if isValidEMEI(n):
print ( "Valid IMEI Code" )
else :
print ( "Invalid IMEI Code" )
|
C#
using System;
class GFG {
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)
{
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);
if (i % 2 == 0)
d = 2 * d;
sum += sumDig(d);
n = n / 10;
}
return (sum % 10 == 0);
}
public static void Main()
{
long n = 490154203237518L;
if (isValidIMEI(n))
Console.Write( "Valid IMEI Code" );
else
Console.Write( "Invalid IMEI Code" );
}
}
|
Javascript
<script>
function sumDig(n)
{
let a = 0;
while (n > 0)
{
a = a + n % 10;
n = parseInt(n / 10, 10);
}
return a;
}
function isValidIMEI(n)
{
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);
if (i % 2 == 0)
d = 2 * d;
sum += sumDig(d);
n = parseInt(n / 10, 10);
}
return (sum % 10 == 0);
}
let n = 490154203237518;
if (isValidIMEI(n))
document.write( "Valid IMEI Code" );
else
document.write( "Invalid IMEI Code" );
</script>
|
Time complexity : O(n log10 n)
Auxiliary Space: O(n)
Share your thoughts in the comments
Please Login to comment...