Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Check whether a large number is divisible by 53 or not

  • Last Updated : 16 Sep, 2020

Given a large number in the form of a string N, the task is to check whether the number is divisible by 53 or not.

Examples:

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Input: N = 5299947
Output: Yes



Input: N = 54
Output: No

Approach:

  • Extract the last digit of the given string N and remove it.
  • Multiply that digit by 37.
  • Subtract the product calculated in the above step from the remaining number.
  • Continue until we reduce the given string to a 3 or four digit number.
  • Convert the remaining string to its corresponding integer form and check if it is divisible by 53 or not.

Below is the implementation of the above approach:

C++




// C++ program to check
// whether a number
// is divisible by 53 or not
#include <bits/stdc++.h>
using namespace std;
  
// Function to check if the
// number is divisible by 53 or not
bool isDivisible(string s)
{
    int flag = 0;
    while (s.size() > 4) {
  
        int l = s.size() - 1;
        int x = (s[l] - '0') * 37;
  
        reverse(s.begin(), s.end());
        s.erase(0, 1);
  
        int i = 0, carry = 0;
        while (x) {
            int d = (s[i] - '0')
                    - (x % 10)
                    - carry;
            if (d < 0) {
                d += 10;
                carry = 1;
            }
            else
                carry = 0;
  
            s[i] = (char)(d + '0');
            x /= 10;
            i++;
        }
  
        while (carry && i < l) {
            int d = (s[i] - '0') - carry;
            if (d < 0) {
                d += 10;
                carry = 1;
            }
            else
                carry = 0;
  
            s[i] = (char)(d + '0');
  
            i++;
        }
  
        reverse(s.begin(), s.end());
    }
  
    int num = 0;
    for (int i = 0; i < s.size(); i++) {
        num = num * 10 + (s[i] - '0');
    }
  
    if (num % 53 == 0)
        return true;
    else
        return false;
}
  
// Driver Code
int main()
{
    string N = "18432462191076";
  
    if (isDivisible(N))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
  
    return 0;
}

Java




// Java program to check whether 
// a number is divisible by 53 or not
import java.util.*;
  
class GFG{
  
// Function to check if the
// number is divisible by 53 or not
static boolean isDivisible(char []s)
{
    while (s.length > 4)
    {
        int l = s.length - 1;
        int x = (s[l] - '0') * 37;
  
        s = reverse(s);
        s = Arrays.copyOfRange(s, 1, s.length);
  
        int i = 0, carry = 0;
        while (x > 0
        {
            int d = (s[i] - '0') - 
                        (x % 10) - 
                        carry;
                      
            if (d < 0)
            {
                d += 10;
                carry = 1;
            }
            else
                carry = 0;
  
            s[i] = (char)(d + '0');
            x /= 10;
            i++;
        }
  
        while (carry > 0 && i < l)
        {
            int d = (s[i] - '0') - carry;
            if (d < 0)
            {
                d += 10;
                carry = 1;
            }
            else
                carry = 0;
  
            s[i] = (char)(d + '0');
            i++;
        }
        s = reverse(s);
    }
  
    int num = 0;
    for(int i = 0; i < s.length; i++) 
    {
       num = num * 10 + (s[i] - '0');
    }
  
    if (num % 53 == 0)
        return true;
    else
        return false;
}
  
static char[] reverse(char []a)
{
    int l, r = a.length - 1;
      
    for(l = 0; l < r; l++, r--)
    {
       char temp = a[l];
            a[l] = a[r];
            a[r] = temp;
    }
    return a;
}
  
// Driver Code
public static void main(String[] args)
{
    String N = "18432462191076";
  
    if (isDivisible(N.toCharArray()))
        System.out.print("Yes" + "\n");
    else
        System.out.print("No" + "\n");
}
}
  
// This code is contributed by Rohit_ranjan

Python3




# Python3 program to check whether a  
# number is divisible by 53 or not
  
# Function to check if the
# number is divisible by 53 or not
def isDivisible(s):
      
    flag = 0
      
    while (len(s) > 4):
        l = len(s) - 1
        x = (ord(s[l]) - ord('0')) * 37
  
        s = s[::-1]
        s = s.replace('0', '', 1)
  
        i = 0
        carry = 0
          
        while (x):
            d = ((ord(s[i]) - ord('0')) - 
                 (x % 10) - carry)
            if (d < 0):
                d += 10
                carry = 1
            else:
                carry = 0
                  
            s = s.replace(s[i], chr(d + ord('0')), 1)
            x //= 10
            i += 1
  
        while (carry and i < l):
            d = (ord(s[i]) - ord('0')) - carry
              
            if (d < 0):
                d += 10
                carry = 1
            else:
                carry = 0
              
            s = s.replace(s[i], chr(d + ord('0')), 1)
            i += 1
        s = s[::-1]
  
    num = 0
    for i in range(len(s)):
        num = num * 10 + (ord(s[i]) - ord('0'))
  
    if (num % 53 == 0):
        return True
    else:
        return False
  
# Driver Code
if __name__ == '__main__':
      
    N = "1843246219106"
  
    if (isDivisible(N)):
        print("No")
    else:
        print("Yes")
  
# This code is contributed by Surendra_Gangwar

C#




// C# program to check whether  
// a number is divisible by 53 or not 
using System; 
using System.Collections; 
using System.Collections.Generic; 
  
class GFG{
      
// Function to check if the
// number is divisible by 53 or not
static bool isDivisible(char []s)
{
    while (s.Length > 4)
    {
        int l = s.Length - 1;
        int x = (s[l] - '0') * 37;
  
        s = reverse(s);
          
        char []tmp = new char[s.Length - 1];
          
        Array.Copy(s, 1, tmp, 0, s.Length - 1);
        s = tmp;
          
        int i = 0, carry = 0;
        while (x > 0) 
        {
            int d = (s[i] - '0') - 
                       (x % 10) - carry;
                         
            if (d < 0)
            {
                d += 10;
                carry = 1;
            }
            else
                carry = 0;
  
            s[i] = (char)(d + '0');
            x /= 10;
            i++;
        }
  
        while (carry > 0 && i < l)
        {
            int d = (s[i] - '0') - carry;
            if (d < 0)
            {
                d += 10;
                carry = 1;
            }
            else
                carry = 0;
  
            s[i] = (char)(d + '0');
            i++;
        }
        s = reverse(s);
    }
  
    int num = 0;
    for(int i = 0; i < s.Length; i++) 
    {
        num = num * 10 + (s[i] - '0');
    }
  
    if (num % 53 == 0)
        return true;
    else
        return false;
}
  
static char[] reverse(char []a)
{
    int l, r = a.Length - 1;
      
    for(l = 0; l < r; l++, r--)
    {
        char temp = a[l];
             a[l] = a[r];
             a[r] = temp;
    }
    return a;
}
  
// Driver Code
public static void Main(string[] args)
{
    string N = "18432462191076";
  
    if (isDivisible(N.ToCharArray()))
        Console.Write("Yes" + "\n");
    else
        Console.Write("No" + "\n");
}
}
  
// This code is contributed by rutvik_56
Output:
Yes



My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!