# Check if a large number is divisible by 13 or not

Given a large number, the task is to check if the number is divisible by 13 or not.

**Examples :**

Input : 637 Output : 637 is divisible by 13. Input : 920 Output : 920 is not divisible by 13. Input : 83959092724 Output : 83959092724 is divisible by 13.

If the given number **num** is small, we can easily find whether it is divisible by 13 or not by doing num % 13 and checking whether the result is 0 or not. But what about very large numbers? Let’s discuss large numbers.

Below are some interesting facts about the divisibility of 13.

- A number is divisible by 13 if and if the alternating sum (alternatively adding and subtracting) of blocks of three from right to left is divisible by 13. For example, 2911285 is divisible by 13 because the alternating sum of blocks of size 3 is 2 – 911 + 285 = -650 which is divisible by 13.
- A number is divisible by 13 if and only if the number obtained by adding the last digit multiplied by 4 to the rest is also divisible by 13.

For example, consider 2353. Applying above rule, we get 235 + 3*4 = 247. Again we apply the rule and get 24 + 7*4 = 52. Since 52 is divisible by 13, the given number is divisible by 13.

Below is the implementation based on first fact above (Finding the alternating sum of blocks of size 3)

## C++

`// CPP program to check ` `// whether a number is ` `// divisible by 13 or not.` `#include <iostream>` `using` `namespace` `std;` `// Returns true if number ` `// is divisible by 13 else` `// returns false` `bool` `checkDivisibility(string num)` `{` ` ` `int` `length = num.size();` ` ` `if` `(length == 1 && num[0] == ` `'0'` `)` ` ` `return` `true` `;` ` ` `// Append required 0s .` ` ` `// at the beginning.` ` ` `if` `(length % 3 == 1)` ` ` `{` ` ` `// Same as strcat(num, "00");` ` ` `// in c. ` ` ` `num +=` `"00"` `; ` ` ` `length += 2;` ` ` `}` ` ` `else` `if` `(length % 3 == 2)` ` ` `{` ` ` `// Same as strcat(num, "0");` ` ` `// in c. ` ` ` `num += ` `"0"` `; ` ` ` `length += 1;` ` ` `}` ` ` `// Alternatively add/subtract ` ` ` `// digits in group of three ` ` ` `// to result.` ` ` `int` `sum = 0, p = 1;` ` ` `for` `(` `int` `i = length - 1; i >= 0; i--) ` ` ` `{` ` ` `// Store group of three ` ` ` `// numbers in group variable.` ` ` `int` `group = 0;` ` ` `group += num[i--] - ` `'0'` `;` ` ` `group += (num[i--] - ` `'0'` `) * 10;` ` ` `group += (num[i] - ` `'0'` `) * 100;` ` ` `sum = sum + group * p;` ` ` `// Generate alternate series ` ` ` `// of plus and minus` ` ` `p *= (-1);` ` ` `}` ` ` `sum = ` `abs` `(sum); ` ` ` `return` `(sum % 13 == 0);` `}` `// Driver code` `int` `main() ` `{` ` ` `string number = ` `"83959092724"` `; ` ` ` `if` `(checkDivisibility(number))` ` ` `cout << number << ` `" is divisible by 13."` `;` ` ` `else` ` ` `cout << number << ` `" is not divisible by 13."` `; ` ` ` `return` `0;` `} ` |

## Java

`// Java program to check ` `// whether a number is ` `// divisible by 13 or not.` `class` `GFG` `{` ` ` `// Returns true if number ` `// is divisible by 13 else` `// returns false` `static` `boolean` `checkDivisibility(String num)` `{` ` ` `int` `length = num.length();` ` ` `if` `(length == ` `1` `&& ` ` ` `num.charAt(` `0` `) == ` `'0'` `)` ` ` `return` `true` `;` ` ` `// Append required 0s .` ` ` `// at the beginning.` ` ` `if` `(length % ` `3` `== ` `1` `)` ` ` `{` ` ` `// Same as strcat(num, "00");` ` ` `// in c. ` ` ` `num +=` `"00"` `; ` ` ` `length += ` `2` `;` ` ` `}` ` ` `else` `if` `(length % ` `3` `== ` `2` `)` ` ` `{` ` ` `// Same as strcat(num, "0");` ` ` `// in c. ` ` ` `num += ` `"0"` `; ` ` ` `length += ` `1` `;` ` ` `}` ` ` `// Alternatively add/subtract ` ` ` `// digits in group of three ` ` ` `// to result.` ` ` `int` `sum = ` `0` `, p = ` `1` `;` ` ` `for` `(` `int` `i = length - ` `1` `; i >= ` `0` `; i--) ` ` ` `{` ` ` `// Store group of three ` ` ` `// numbers in group variable.` ` ` `int` `group = ` `0` `;` ` ` `group += num.charAt(i--) - ` `'0'` `;` ` ` `group += (num.charAt(i--) - ` `'0'` `) * ` `10` `;` ` ` `group += (num.charAt(i) - ` `'0'` `) * ` `100` `;` ` ` `sum = sum + group * p;` ` ` `// Generate alternate series ` ` ` `// of plus and minus` ` ` `p *= (-` `1` `);` ` ` `}` ` ` `sum = Math.abs(sum); ` ` ` `return` `(sum % ` `13` `== ` `0` `);` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `String number = ` `"83959092724"` `; ` ` ` ` ` `if` `(checkDivisibility(number))` ` ` `System.out.println(number + ` ` ` `" is divisible by 13."` `);` ` ` `else` ` ` `System.out.println(number + ` ` ` `" is not divisible by 13."` `); ` `}` `}` `// This code is contributed by mits` |

## Python3

`# Python 3 program to check whether a ` `# number is divisible by 13 or not` `# Returns true if number is divisible ` `# by 13 else returns false` `def` `checkDivisibility( num):` ` ` `length ` `=` `len` `(num)` ` ` `if` `(length ` `=` `=` `1` `and` `num[` `0` `] ` `=` `=` `'0'` `):` ` ` `return` `True` ` ` `# Append required 0s at the beginning.` ` ` `if` `(length ` `%` `3` `=` `=` `1` `):` ` ` ` ` `# Same as strcat(num, "00");` ` ` `# in c. ` ` ` `num ` `=` `str` `(num) ` `+` `"00"` ` ` `length ` `+` `=` `2` ` ` ` ` `elif` `(length ` `%` `3` `=` `=` `2` `):` ` ` ` ` `# Same as strcat(num, "0");` ` ` `# in c. ` ` ` `num ` `=` `str` `(num) ` `+` `"0"` ` ` `length ` `+` `=` `1` ` ` `# Alternatively add/subtract digits ` ` ` `# in group of three to result.` ` ` `sum` `=` `0` ` ` `p ` `=` `1` ` ` `for` `i ` `in` `range` `(length ` `-` `1` `, ` `-` `1` `, ` `-` `1` `) :` ` ` ` ` `# Store group of three ` ` ` `# numbers in group variable.` ` ` `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` ` ` `sum` `=` `sum` `+` `group ` `*` `p` ` ` `# Generate alternate series ` ` ` `# of plus and minus` ` ` `p ` `*` `=` `(` `-` `1` `)` ` ` `sum` `=` `abs` `(` `sum` `)` ` ` `return` `(` `sum` `%` `13` `=` `=` `0` `)` `# Driver code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `number ` `=` `"83959092724"` ` ` `if` `(checkDivisibility(number)):` ` ` `print` `( number , ` `"is divisible by 13."` `)` ` ` `else` `:` ` ` `print` `( number ,` `"is not divisible by 13."` `)` `# This code is contributed by ChitraNayal` |

## C#

`// C# program to check ` `// whether a number is ` `// divisible by 13 or not.` `using` `System;` `class` `GFG {` ` ` ` ` `// Returns true if number ` ` ` `// is divisible by 13 else` ` ` `// returns false` ` ` `static` `bool` `checkDivisibility(` `string` `num)` ` ` `{` ` ` `int` `length = num.Length;` ` ` `if` `(length == 1 && num[0] == ` `'0'` `)` ` ` `return` `true` `;` ` ` ` ` `// Append required 0s .` ` ` `// at the beginning.` ` ` `if` `(length % 3 == 1)` ` ` `{` ` ` `// Same as strcat(num, "00");` ` ` `// in c. ` ` ` `num +=` `"00"` `; ` ` ` `length += 2;` ` ` `}` ` ` `else` `if` `(length % 3 == 2)` ` ` `{` ` ` `// Same as strcat(num, "0");` ` ` `// in c. ` ` ` `num += ` `"0"` `; ` ` ` `length += 1;` ` ` `}` ` ` `// Alternatively add/subtract ` ` ` `// digits in group of three ` ` ` `// to result.` ` ` `int` `sum = 0, p = 1;` ` ` `for` `(` `int` `i = length - 1; i >= 0; i--) ` ` ` `{` ` ` `// Store group of three ` ` ` `// numbers in group variable.` ` ` `int` `group` `= 0;` ` ` `group` `+= num[i--] - ` `'0'` `;` ` ` `group` `+= (num[i--] - ` `'0'` `) * 10;` ` ` `group` `+= (num[i] - ` `'0'` `) * 100;` ` ` ` ` `sum = sum + ` `group` `* p;` ` ` ` ` `// Generate alternate series ` ` ` `// of plus and minus` ` ` `p *= (-1);` ` ` `}` ` ` `sum = Math.Abs(sum); ` ` ` `return` `(sum % 13 == 0);` ` ` `}` ` ` ` ` `// Driver code` ` ` `static` `void` `Main()` ` ` `{` ` ` `string` `number = ` `"83959092724"` `; ` ` ` ` ` `if` `(checkDivisibility(number))` ` ` `Console.Write( number + ` ` ` `" is divisible by 13."` `);` ` ` `else` ` ` `Console.Write( number + ` ` ` `" is not divisible by 13."` `); ` ` ` `}` `}` `// This code is contributed by Sam007` |

## PHP

`<?php` `// PHP program to check ` `// whether a number is ` `// divisible by 13 or not.` `// Returns true if number ` `// is divisible by 13 else` `// returns false` `function` `checkDivisibility(` `$num` `)` `{` ` ` `$length` `= ` `strlen` `(` `$num` `);` ` ` `if` `(` `$length` `== 1 && ` ` ` `$num` `[0] == ` `'0'` `)` ` ` `return` `true;` ` ` `// Append required 0s ` ` ` `// at the beginning.` ` ` `if` `(` `$length` `% 3 == 1)` ` ` `{` ` ` `// Same as strcat(num, "00"); ` ` ` `// in c. ` ` ` `$num` `+= ` `"00"` `; ` ` ` `$length` `+= 2;` ` ` `}` ` ` `else` `if` `(` `$length` `% 3 == 2)` ` ` `{` ` ` `// Same as strcat(num, "0"); ` ` ` `// in c. ` ` ` `$num` `+= ` `"0"` `; ` ` ` `$length` `+= 1;` ` ` `}` ` ` `// Alternatively add/subtract ` ` ` `// digits in group of three` ` ` `// to result.` ` ` `$sum` `= 0; ` `$p` `= 1;` ` ` `for` `(` `$i` `= ` `$length` `- 1; ` `$i` `>= 0; ` `$i` `--) ` ` ` `{` ` ` `// Store group of three ` ` ` `// numbers in group variable.` ` ` `$group` `= 0;` ` ` `$group` `+= ` `$num` `[` `$i` `--] - ` `'0'` `;` ` ` `$group` `+= (` `$num` `[` `$i` `--] - ` `'0'` `) * 10;` ` ` `$group` `+= (` `$num` `[` `$i` `] - ` `'0'` `) * 100;` ` ` `$sum` `= ` `$sum` `+ ` `$group` `* ` `$p` `;` ` ` `// Generate alternate series ` ` ` `// of plus and minus` ` ` `$p` `*= (-1);` ` ` `}` ` ` ` ` `$sum` `= ` `abs` `(` `$sum` `); ` ` ` `return` `(` `$sum` `% 13 == 0);` `}` `// Driver code` `$number` `= ` `"83959092724"` `; ` `if` `(checkDivisibility(` `$number` `))` ` ` `echo` `(` `$number` `. ` `" is divisible by 13."` `);` `else` ` ` `echo` `(` `$number` `. ` `" is not divisible by 13."` `); ` `// This code is contributed by Ajit. ` `?>` |

## Javascript

`<script>` `// Javascript program to check` `// whether a number is` `// divisible by 13 or not.` `// Returns true if number` `// is divisible by 13 else` `// returns false` `function` `checkDivisibility(num)` `{` ` ` `let length = num.length;` ` ` `if` `(length == 1 &&` ` ` `num[0] == ` `'0'` `)` ` ` `return` `true` `;` ` ` `// Append required 0s` ` ` `// at the beginning.` ` ` `if` `(length % 3 == 1)` ` ` `{` ` ` `// Same as strcat(num, "00");` ` ` `// in c.` ` ` `num += ` `"00"` `;` ` ` `length += 2;` ` ` `}` ` ` `else` `if` `(length % 3 == 2)` ` ` `{` ` ` `// Same as strcat(num, "0");` ` ` `// in c.` ` ` `num += ` `"0"` `;` ` ` `length += 1;` ` ` `}` ` ` `// Alternatively add/subtract` ` ` `// digits in group of three` ` ` `// to result.` ` ` `let sum = 0; p = 1;` ` ` `for` `(let i = length - 1; i >= 0; i--)` ` ` `{` ` ` `// Store group of three` ` ` `// numbers in group variable.` ` ` `group = 0;` ` ` `group += num[i--] - ` `'0'` `;` ` ` `group += (num[i--] - ` `'0'` `) * 10;` ` ` `group += (num[i] - ` `'0'` `) * 100;` ` ` `sum = sum + group * p;` ` ` `// Generate alternate series` ` ` `// of plus and minus` ` ` `p *= (-1);` ` ` `}` ` ` ` ` `sum = Math.abs(sum);` ` ` `return` `(sum % 13 == 0);` `}` `// Driver code` `let number = ` `"83959092724"` `;` `if` `(checkDivisibility(number))` ` ` `document.write(number + ` `" is divisible by 13."` `);` `else` ` ` `document.write(number + ` `" is not divisible by 13."` `);` `// This code is contributed by _saurabh_jaiswal.` `</script>` |

**Output**

83959092724 is divisible by 13.

**Time Complexity:** O(length(number))**Auxiliary Space:** O(1)

**Method:** Checking given number is divisible by 13 or not by using the modulo division operator “%”.

## C++

`#include <iostream>` `using` `namespace` `std;` `int` `main() {` ` ` `//input` ` ` `long` `int` `n = 83959092724L;` ` ` ` ` `// finding given number is divisible by 13 or not` ` ` `if` `((n) % 13 == 0)` ` ` `{` ` ` `cout<<` `"Yes"` `;` ` ` `}` ` ` `else` ` ` `{` ` ` `cout<<` `"No"` `;` ` ` `}` ` ` `return` `0;` `}` `// This code is contributed by laxmigangarajula03` |

## Java

`/*package whatever //do not write package name here */` `// Java code` `// To check whether the given number is divisible by 13 or not` ` ` `import` `java.io.*;` `import` `java.util.*;` ` ` `class` `GFG` `{` ` ` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `//input` ` ` `long` `n = 83959092724L;` ` ` `// finding given number is divisible by 13 or not` ` ` ` ` `if` `((n) % ` `13` `== ` `0` `)` ` ` `{` ` ` `System.out.println(` `"Yes"` `);` ` ` `}` ` ` `else` ` ` `{` ` ` `System.out.println(` `"No"` `);` ` ` `}` ` ` ` ` `}` `}` `// This code is contributed by satwik4409.` |

## Python3

`# Python code ` `# To check whether the given number is divisible by 13 or not` `#input ` `n` `=` `83959092724` `# the above input can also be given as n=input() -> taking input from user` `# finding given number is divisible by 13 or not` `if` `int` `(n)` `%` `13` `=` `=` `0` `:` ` ` `print` `(` `"Yes"` `) ` `else` `: ` ` ` `print` `(` `"No"` `)` ` ` `# this code is contributed by gangarajula laxmi` |

## C#

`using` `System;` `public` `class` `GFG {` ` ` `static` `public` `void` `Main()` ` ` `{` ` ` `// input` ` ` `long` `n = 83959092724L;` ` ` ` ` `// finding given number is divisible by 13 or not` ` ` `if` `((n) % 13 == 0) {` ` ` `Console.Write(` `"Yes"` `);` ` ` `}` ` ` `else` `{` ` ` `Console.Write(` `"No"` `);` ` ` `}` ` ` `} ` `}` `// This code is contriuted by laxmigangarajula03` |

## PHP

`<?php` ` ` `//input` ` ` `$n` `= 83959092724;` ` ` ` ` `// the above input can also be given as n=input() -> taking input from user` ` ` `// finding given number is divisible by 13 or not` ` ` `if` `(` `$n` `% 13 == 0)` ` ` `{` ` ` `echo` `"Yes"` `;` ` ` `}` ` ` `else` ` ` `{` ` ` `echo` `"No"` `;` ` ` `} ` ` ` `// This code is contributed by satwik4409.` `?>` |

## Javascript

`<script>` `//input` ` ` `n = 83959092724;` ` ` ` ` `// the above input can also be given as n=input() -> taking input from user` ` ` `// finding given number is divisible by 13 or not` ` ` `if` `(n % 13 == 0)` ` ` `{` ` ` `document.write(` `"Yes"` `);` ` ` `}` ` ` `else` ` ` `{` ` ` `document.write(` `"No"` `);` ` ` `} ` ` ` ` ` `// This code is contributed by laxmigangarajula03` ` ` `</script>` |

**Output**

Yes

**Time Complexity:** O(1)**Auxiliary Space:** O(1)