# To check whether a large number is divisible by 7

You are given an n-digit large number, you have to check whether it is divisible by 7.
A (r+1)-digit integer n whose digital form is (ar ar-1 ar-2….a2 a1 a0) is divisible by 7 if and only if the alternate series of numbers (a2 a1 a0) + (a5 a4 a3) – (a8 a7 a6) + … is divisible by 7.
The triplets of digits within parenthesis represent 3-digit number in digital form.

The given number n can be written as a sum of powers of 1000 as follows.
n= (a2 a1 a0) + (a5 a4 a3)*1000 + (a8 a7 a6)*(1000*1000) +….
As 1000 = (-1)(mod 7), 1000 as per congruence relation.
For a positive integer n, two numbers a and b are said to be congruent modulo n, if their difference
(a – b) is an integer multiple of n (that is, if there is an integer k such that a – b = kn). This congruence relation is typically considered when a and b are integers, and is denoted Hence we can write:
n = { (a2a1a0) + (a5a4a3)* (-1) + (a8a7a6)* (-1)*(-1)+…..}(mod 7),
Thus n is divisible by 7 if and if only if the series is divisible by 7.

Examples :

Input : 8955795758
Output : Divisible by 7
Explanation:
We express the number in terms of triplets
of digits as follows.
(008)(955)(795)(758)
Now, 758- 795 + 955 - 8 = 910, which is
divisible by 7

Input : 100000000000
Output : Not Divisible by 7
Explanation:
We express the number in terms of triplets
of digits as follows.
(100)(000)(000)(000)
Now, 000- 000 + 000 - 100 = -100, which is
not divisible by 7


Note that the number of digits in n may not be multiple of 3 . In that case we pas zero(s) on the left side of the remaining digits(s) after taking out all the triplets (from right side of n) to form the last triplet.
A simple and efficient method is to take input in form of string (make its length in form of 3*m by adding 0 to left of number if required) and then you have to add the digits in blocks of three from right to left until it become a 3 digit number to form an alternate series and check whether the series is divisible by 7 or not.
Here the program implementation to check divisibility of 7 is done.

## C++

 // C++ code to check divisibility of a  // given large number by 7  #include  using namespace std;     int isdivisible7(char num[])  {      int n = strlen(num), gSum;      if (n == 0 && num == '\n')          return 1;         // Append required 0s at the beginning.      if (n % 3 == 1) {          strcat(num, "00");          n += 2;      }      else if (n % 3 == 2) {          strcat(num, "0");          n++;      }         // add digits in group of three in gSum      int i, GSum = 0, p = 1;      for (i = n - 1; i >= 0; i--) {             // group saves 3-digit group          int group = 0;          group += num[i--] - '0';          group += (num[i--] - '0') * 10;          group += (num[i] - '0') * 100;             gSum = gSum + group * p;             // generate alternate series of plus          // and minus          p *= (-1);      }         return (gSum % 7 == 0);  }     // Driver code  int main()  {      // Driver method      char num[] = "8955795758";      if (isdivisible7(num))          cout << "Divisible by 7";      else         cout << "Not Divisible by 7";      return 0;  }     // This code is contributed  // by Akanksha Rai

## C

 // C code to check divisibility of a  // given large number by 7  #include  #include  int isdivisible7(char num[])  {      int n = strlen(num), gSum;      if (n == 0 && num == '\n')          return 1;         // Append required 0s at the beginning.      if (n % 3 == 1) {          strcat(num, "00");          n += 2;      }      else if (n % 3 == 2) {          strcat(num, "0");          n++;      }         // add digits in group of three in gSum      int i, GSum = 0, p = 1;      for (i = n - 1; i >= 0; i--) {             // group saves 3-digit group          int group = 0;          group += num[i--] - '0';          group += (num[i--] - '0') * 10;          group += (num[i] - '0') * 100;             gSum = gSum + group * p;             // generate alternate series of plus          // and minus          p *= (-1);      }         return (gSum % 7 == 0);  }     // Driver code  int main()  {      // Driver method      char num[] = "8955795758";      if (isdivisible7(num))          printf("Divisible by 7");      else         printf("Not Divisible by 7");      return 0;  }

## Java

 // Java code to check divisibility of a given large number by 7     class Test {      // Method to check divisibility      static boolean isDivisible7(String num)      {          int n = num.length();          if (n == 0 && num.charAt(0) == '0')              return true;             // Append required 0s at the beginning.          if (n % 3 == 1)              num = "00" + num;          if (n % 3 == 2)              num = "0" + num;          n = num.length();             // add digits in group of three in gSum          int gSum = 0, p = 1;          for (int i = n - 1; i >= 0; i--) {                 // group saves 3-digit group              int group = 0;              group += num.charAt(i--) - '0';              group += (num.charAt(i--) - '0') * 10;              group += (num.charAt(i) - '0') * 100;              gSum = gSum + group * p;              // generate alternate series of plus and minus              p = p * -1;          }             // calculate result till 3 digit sum          return (gSum % 7 == 0);      }         // Driver method      public static void main(String args[])      {          String num = "8955795758";             System.out.println(isDivisible7(num) ? "Divisible by 7" : "Not Divisible  by 7");      }  }

## Python 3

 # Python 3 code to check divisibility   # of a given large number by 7     def isdivisible7(num):      n = len(num)      if (n == 0 and num == '\n'):          return 1        # Append required 0s at the beginning.      if (n % 3 == 1) :          num = str(num) + "00"         n += 2            elif (n % 3 == 2) :          num = str(num) + "0"         n += 1        # add digits in group of three in gSum      GSum = 0     p = 1     for i in range(n - 1, -1, -1) :             # group saves 3-digit group          group = 0         group += ord(num[i]) - ord('0')          i -= 1         group += (ord(num[i]) - ord('0')) * 10         i -= 1         group += (ord(num[i]) - ord('0')) * 100            GSum = GSum + group * p             # generate alternate series of           # plus and minus          p *= (-1)         return (GSum % 7 == 0)     # Driver code  if __name__ == "__main__":             num = "8955795758"     if (isdivisible7(num)):          print("Divisible by 7")      else :          print("Not Divisible by 7")     # This code is contributed by ChitraNayal

## C#

 // C# code to check divisibility of a  // given large number by 7  using System;     class GFG {         // Method to check divisibility      static bool isDivisible7(String num)      {          int n = num.Length;          if (n == 0 && num == '0')              return true;             // Append required 0s at the beginning.          if (n % 3 == 1)              num = "00" + num;             if (n % 3 == 2)              num = "0" + num;             n = num.Length;             // add digits in group of three in gSum          int gSum = 0, p = 1;          for (int i = n - 1; i >= 0; i--) {                 // group saves 3-digit group              int group = 0;              group += num[i--] - '0';              group += (num[i--] - '0') * 10;              group += (num[i] - '0') * 100;              gSum = gSum + group * p;                 // generate alternate series              // of plus and minus              p = p * -1;          }             // calculate result till 3 digit sum          return (gSum % 7 == 0);      }         // Driver code      static public void Main()      {          String num = "8955795758";             // Function calling          Console.WriteLine(isDivisible7(num) ? "Divisible by 7" : "Not Divisible by 7");      }  }     // This code is contributed by Ajit.

## PHP

 = 0; $i--)   {     // group saves 3-digit group   $group = 0;           $group += $num[$i--] - '0';   $group += ($num[$i--] - '0') * 10;           $group += ($num[$i] - '0') * 100;   $gSum = $gSum + $group * $p;     // generate alternate series   // of plus and minus   $p = $p * -1;   }     // calculate result till 3 digit sum   return ($gSum % 7 == 0);   }      // Driver Code  $num = "8955795758";    echo (isDivisible7($num) ?           "Divisible by 7" :          "Not Divisible by 7");      // This code is contributed by Ryuga  ?>

Output:

 Divisible by 7


This article is contributed by Sruti Rai.If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.