Skip to content
Related Articles

Related Articles

Check if a large number is divisible by 13 or not

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 22 Aug, 2022
View Discussion
Improve Article
Save Article

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 contributed 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)


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!