Given a large number as a string, find the remainder of number when divided by 7.

**Examples :**

Input : num = 1234 Output : 2 Input : num = 1232 Output : 0 Input : num = 12345 Output : 4

Simple Approach is to convert a string into number and perform the mod operation. But this approach will not work for long strings.

There exists an approach that works for large numbers also. Below are the steps.

Let the given number be “num”

- We use a series 1, 3, 2, -1, -3, -2 to find the remainder (Intuition behind the series is discussed below).
- Initialize the result as 0.
- Traverse num from end and above series from beginning. For every traversed digit, multiply it with next digit of series, and add the multiplication to result.
- Keep repeating step 3 while there are more digits to process. If there are more than 6(number of terms in series) digits, then start traversing the series from beginning.
- After each step, we keep doing result = result % 7 to make sure that result remains less than 7.

**Illustration : **

let us take above Example where number is 12345. We reverse the number from end and series from the beginning and keep adding multiplication to the result. (12345 % 7) = (5*1 + 4*3 + 3*2 + 2*(-1) + 1*(-3)) % 7 = (5 + 12 + 6 - 2 - 3)%7 = (18) % 7 = 4 hence 4 will be the remainder when we divide the number 12345 by 7.

**How does this series formula work?**

Below is the intuition behind the series

1 % 7 = 1 10 % 7 = 3 100 % 7 = 2 1000 % 7 = 6 = (-1) % 7 10000 % 7 = 4 = (-3) % 7 100000 % 7 = 5 = (-2) % 7 The series repeats itself for larger powers 1000000 % 7 = 1 10000000 % 7 = 3 .............. ............... The above property of modular division with 7 and associative properties of modular arithmetic are the basis of the approach used here.

**Implementation:**

## C++

`// C++ program to find remainder of a large ` `// number when divided by 7. ` `#include<iostream> ` `using` `namespace` `std; ` ` ` `/* Function which returns Remainder after dividing ` ` ` `the number by 7 */` `int` `remainderWith7(string num) ` `{ ` ` ` `// This series is used to find remainder with 7 ` ` ` `int` `series[] = {1, 3, 2, -1, -3, -2}; ` ` ` ` ` `// Index of next element in series ` ` ` `int` `series_index = 0; ` ` ` ` ` `int` `result = 0; ` `// Initialize result ` ` ` ` ` `// Traverse num from end ` ` ` `for` `(` `int` `i=num.size()-1; i>=0; i--) ` ` ` `{ ` ` ` `/* Find current digit of nun */` ` ` `int` `digit = num[i] - ` `'0'` `; ` ` ` ` ` `// Add next term to result ` ` ` `result += digit * series[series_index]; ` ` ` ` ` `// Move to next term in series ` ` ` `series_index = (series_index + 1) % 6; ` ` ` ` ` `// Make sure that result never goes beyond 7. ` ` ` `result %= 7; ` ` ` `} ` ` ` ` ` `// Make sure that remainder is positive ` ` ` `if` `(result < 0) ` ` ` `result = (result + 7) % 7; ` ` ` ` ` `return` `result; ` `} ` ` ` `/* Driver program */` `int` `main() ` `{ ` ` ` `string str = ` `"12345"` `; ` ` ` `cout << ` `"Remainder with 7 is "` ` ` `<< remainderWith7(str); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program to find remainder of a large ` `// number when divided by 7. ` ` ` `class` `GFG ` `{ ` ` ` `// Function which return Remainder ` ` ` `// after dividingthe number by 7 ` ` ` `static` `int` `remainderWith7(String num) ` ` ` `{ ` ` ` `// This series is used to ` ` ` `// find remainder with 7 ` ` ` `int` `series[] = {` `1` `, ` `3` `, ` `2` `, -` `1` `, -` `3` `, -` `2` `}; ` ` ` ` ` `// Index of next element in series ` ` ` `int` `series_index = ` `0` `; ` ` ` ` ` `// Initialize result ` ` ` `int` `result = ` `0` `; ` ` ` ` ` `// Traverse num from end ` ` ` `for` `(` `int` `i = num.length() - ` `1` `; i >= ` `0` `; i--) ` ` ` `{ ` ` ` `/* Find current digit of nun */` ` ` `int` `digit = num.charAt(i) - ` `'0'` `; ` ` ` ` ` `// Add next term to result ` ` ` `result += digit * series[series_index]; ` ` ` ` ` `// Move to next term in series ` ` ` `series_index = (series_index + ` `1` `) % ` `6` `; ` ` ` ` ` `// Make sure that result never goes beyond 7. ` ` ` `result %= ` `7` `; ` ` ` `} ` ` ` ` ` `// Make sure that remainder is positive ` ` ` `if` `(result < ` `0` `) ` ` ` `result = (result + ` `7` `) % ` `7` `; ` ` ` ` ` `return` `result; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `main (String[] args) ` ` ` `{ ` ` ` `String str = ` `"12345"` `; ` ` ` `System.out.print(` `"Remainder with 7 is "` ` ` `+remainderWith7(str)); ` ` ` `} ` `} ` ` ` `// This code is contributed by Anant Agarwal. ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to find remainder of ` `# a large number when divided by 7. ` ` ` `# Function which return Remainder ` `# after dividing the number by 7 ` `def` `remainderWith7(num): ` ` ` ` ` `# This series is used to ` ` ` `# find remainder with 7 ` ` ` `series ` `=` `[` `1` `, ` `3` `, ` `2` `, ` `-` `1` `, ` `-` `3` `, ` `-` `2` `]; ` ` ` ` ` `# Index of next element ` ` ` `# in series ` ` ` `series_index ` `=` `0` `; ` ` ` ` ` `# Initialize result ` ` ` `result ` `=` `0` `; ` ` ` ` ` `# Traverse num from end ` ` ` `for` `i ` `in` `range` `((` `len` `(num) ` `-` `1` `), ` `-` `1` `, ` `-` `1` `): ` ` ` ` ` `# Find current digit of num ` ` ` `digit ` `=` `ord` `(num[i]) ` `-` `48` `; ` ` ` ` ` `# Add next term to result ` ` ` `result ` `+` `=` `digit ` `*` `series[series_index]; ` ` ` ` ` `# Move to next term in series ` ` ` `series_index ` `=` `(series_index ` `+` `1` `) ` `%` `6` `; ` ` ` ` ` `# Make sure that result ` ` ` `# never goes beyond 7. ` ` ` `result ` `%` `=` `7` `; ` ` ` ` ` `# Make sure that remainder ` ` ` `# is positive ` ` ` ` ` `if` `(result < ` `0` `): ` ` ` `result ` `=` `(result ` `+` `7` `) ` `%` `7` `; ` ` ` `return` `result; ` ` ` `# Driver Code ` `str` `=` `"12345"` `; ` `print` `(` `"Remainder with 7 is"` `, ` ` ` `remainderWith7(` `str` `)); ` ` ` `# This code is contributed by mits ` |

*chevron_right*

*filter_none*

## C#

`// C# program to find the remainder of ` `// a large number when divided by 7. ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `// Function which return Remainder ` ` ` `// after dividingthe number by 7 ` ` ` `static` `int` `remainderWith7(String num) ` ` ` `{ ` ` ` `// This series is used to ` ` ` `// find remainder with 7 ` ` ` `int` `[]series = {1, 3, 2, -1, -3, -2}; ` ` ` ` ` `// Index of next element in series ` ` ` `int` `series_index = 0; ` ` ` ` ` `// Initialize result ` ` ` `int` `result = 0; ` ` ` ` ` `// Traverse num from end ` ` ` `for` `(` `int` `i = num.Length - 1; i >= 0; i--) ` ` ` `{ ` ` ` `/* Find current digit of nun */` ` ` `int` `digit = num[i] - ` `'0'` `; ` ` ` ` ` `// Add next term to result ` ` ` `result += digit * series[series_index]; ` ` ` ` ` `// Move to next term in series ` ` ` `series_index = (series_index + 1) % 6; ` ` ` ` ` `// Make sure that result never goes beyond 7. ` ` ` `result %= 7; ` ` ` `} ` ` ` ` ` `// Make sure that remainder is positive ` ` ` `if` `(result < 0) ` ` ` `result = (result + 7) % 7; ` ` ` ` ` `return` `result; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `Main () ` ` ` `{ ` ` ` `String str = ` `"12345"` `; ` ` ` `Console.Write(` `"Remainder with 7 is "` `+ ` ` ` `remainderWith7(str)); ` ` ` `} ` `} ` ` ` `// This code is contributed by nitin mittal. ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP program to find remainder of ` `// a large number when divided by 7. ` ` ` `/* Function which return Remainder ` ` ` `after dividing the number by 7 */` `function` `remainderWith7(` `$num` `) ` `{ ` ` ` ` ` `// This series is used to ` ` ` `// find remainder with 7 ` ` ` `$series` `= ` `array` `(1, 3, 2, -1, -3, -2); ` ` ` ` ` `// Index of next element ` ` ` `// in series ` ` ` `$series_index` `= 0; ` ` ` ` ` `// Initialize result ` ` ` `$result` `= 0; ` ` ` ` ` `// Traverse num from end ` ` ` `for` `(` `$i` `= ` `strlen` `(` `$num` `) - 1; ` `$i` `>= 0; ` `$i` `--) ` ` ` `{ ` ` ` ` ` `// Find current digit of num ` ` ` `$digit` `= ` `$num` `[` `$i` `] - ` `'0'` `; ` ` ` ` ` `// Add next term to result ` ` ` `$result` `+= ` `$digit` `* ` ` ` `$series` `[` `$series_index` `]; ` ` ` ` ` `// Move to next term in series ` ` ` `$series_index` `= (` `$series_index` `+ 1) % 6; ` ` ` ` ` `// Make sure that result ` ` ` `// never goes beyond 7. ` ` ` `$result` `%= 7; ` ` ` `} ` ` ` ` ` `// Make sure that remainder ` ` ` `// is positive ` ` ` `if` `(` `$result` `< 0) ` ` ` `$result` `= (` `$result` `+ 7) % 7; ` ` ` ` ` `return` `$result` `; ` `} ` ` ` `// Driver Code ` `{ ` ` ` `$str` `= ` `"12345"` `; ` ` ` `echo` `"Remainder with 7 is "` `, ` ` ` `(remainderWith7(` `$str` `)); ` ` ` `return` `0; ` `} ` ` ` `// This code is contributed by nitin mittal. ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

Remainder with 7 is 4

This article is contributed by ** Kuldeep Singh **. 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.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Program to find remainder when large number is divided by 11
- Program to find remainder when large number is divided by r
- Find N % 4 (Remainder with 4) for a large value of N
- Multiply large integers under large modulo
- Chinese Remainder Theorem | Set 2 (Inverse Modulo based Implementation)
- Program to find remainder without using modulo or % operator
- Using Chinese Remainder Theorem to Combine Modular equations
- Program for quotient and remainder of big number
- Find remainder of array multiplication divided by n
- Generate Array whose sum of all K-size subarrays divided by N leaves remainder X
- Quotient - Remainder Sort
- Minimum number of operations on a binary string such that it gives 10^A as remainder when divided by 10^B
- Count of integers obtained by replacing ? in the given string that give remainder 5 when divided by 13
- Quotient Remainder Theorem
- Check if the remainder of N-1 factorial when divided by N is N-1 or not
- GCD of two numbers when one of them can be very large
- Find Last Digit of a^b for Large Numbers
- Sum of two large numbers
- Difference of two large numbers
- Sort an array of large numbers