Check if any large number is divisible by 19 or not
Given a number, the task is to quickly check if the number is divisible by 19 or not.
Input : x = 38 Output : Yes Input : x = 47 Output : No
A solution to the problem is to extract the last digit and add 2 times of last digit to remaining number and repeat this process until a two digit number is obtained. If the obtained two digit number is divisible by 19, then the given number is divisible by 19.
- Extract the last digit of the number/truncated number every time
- Add 2*(last digit of the previous number) to the truncated number
- Repeat the above three steps as long as necessary.
101156-->10115+2*6 = 10127-->1012+2*7=1026-->102+2*6=114 and 114=6*19, So 101156 is divisible by 19.
Mathematical Proof :
Let be any number such that =100a+10b+c .
Now assume that is divisible by 19. Then
0 (mod 19)
100a+10b+c0 (mod 19)
10(10a+b)+c0 (mod 19)
10+c0 (mod 19)
Now that we have separated the last digit from the number, we have to find a way to use it.
Make the coefficient of 1.
In other words, we have to find an integer such that n such that 10n1 mod 19.
It can be observed that the smallest n which satisfies this property is 2 as 201 mod 19.
Now we can multiply the original equation 10+c0 (mod 19)
by 2 and simplify it:
20+2c0 (mod 19)
+2c0 (mod 19)
We have found out that if 0 (mod 19) then,
+2c0 (mod 19).
In other words, to check if a 3-digit number is divisible by 19,
we can just remove the last digit, multiply it by 2,
and then add to the rest of the two digits.
# Python 3 Program to check
# if the number is divisible
# by 19 or not
# Function to check if the number
# is divisible by 19 or not
def isDivisible(n) :
while (n // 100) :
# Extracting the last digit
d = n % 10
# Truncating the number
n //= 10
# Adding twice the last digit
# to the remaining number
n += d * 2
# return true if number
# is divisible by 19
return (n % 19 == 0)
# Driver Code
if __name__ == "__main__" :
n = 101156
if (isDivisible(n)) :
# This code is contributed
# by ANKITRAI1
Note that the above program may not make a lot of sense as could simply do n % 19 to check for divisibility. The idea of this program is to validate the concept. Also, this might be an efficient approach if input number is large and given as string.