Check whether a given number is Polydivisible or Not

Given an integer n, find whether n is a Polydivisible or not. In mathematics, a number is called Polydivisible if it follows some unique properties. The number should not have any leading zeroes. The number formed by first i digits of the input number should be divisible by i, where i > 1 ~and ~i <= number ~of ~digits ~in ~the ~input ~number. If any number follow these properties then it is called Polydivisible number.
Examples:

Input: 345654
Output: 345654 is Polydivisible number.
Explanation: 
The first digit of the number is non-zero. 
The number formed by the first 2 digits(34) 
is divisible by 2. The number formed by the
first 3 digits(345) is divisible by 3. 
The number formed by the first 4 digits(3456)
is divisible by 4. The number formed by the
first 5 digits(34565) is divisible by 5. 
The number formed by the first 6 digits(345654)
is divisible by 6.     

Input: 130
Output: 130 is Not Polydivisible number.

Input: 129
Output: 129 is Polydivisible number.    

Approach: The idea is very simple.

  1. Extract all the digits of the array and store them in an array.
  2. Pick first 2 digits and form a number and check if it is divisible by 2.
  3. Pick ith digit and append to the existing number and check if the number is divisible by i.
  4. If all the above conditions are satisfied until all the digits are exhausted,then the given number is Polydivisible.

Below is the implementation of the above approach.



C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to check whether
// a number is polydivisible or not
#include <bits/stdc++.h>
using namespace std;
  
// function to check polydivisible
// number
void check_polydivisible(int n)
{
    int N = n;
    vector<int> digit;
  
    // digit extraction of input number
    while (n > 0) {
  
        // store the digits in an array
        digit.push_back(n % 10);
        n /= 10;
    }
    reverse(digit.begin(), digit.end());
  
    bool flag = true;
    n = digit[0];
    for (int i = 1; i < digit.size(); i++) {
  
        // n contains first i digits
        n = n * 10 + digit[i];
  
        // n should be divisible by i
        if (n % (i + 1) != 0) {
            flag = false;
            break;
        }
    }
    if (flag)
        cout << N << " is Polydivisible number.";
    else
        cout << N << " is Not Polydivisible number.";
}
  
int main()
{
    int n = 345654;
    check_polydivisible(n);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check whether
// a number is polydivisible or not
import java.util.*;
import java.io.*;
  
class GFG {
      
    // function to check polydivisible
    // number
    static void check_polydivisible(int n)
    {
        int N = n;
        Vector<Integer> digit = new Vector<Integer>();
      
        // digit extraction of input number
        while (n > 0) {
      
            // store the digits in an array
            digit.add(new Integer(n % 10));
            n /= 10;
        }
        Collections.reverse(digit);
      
        boolean flag = true;
        n = digit.get(0);
        for (int i = 1; i < digit.size(); i++) {
      
            // n contains first i digits
            n = n * 10 + digit.get(i);
      
            // n should be divisible by i
            if (n % (i + 1) != 0) {
                flag = false;
                break;
            }
        }
        if (flag)
            System.out.println(N + " is Polydivisible number.");
        else
            System.out.println(N + " is Not Polydivisible number.");
    }
      
    // Driver code
    public static void main (String[] args) 
    {
        int n = 345654;
        check_polydivisible(n);
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to check whether
# a number is polydivisible or not
  
# function to check polydivisible
# number
def check_polydivisible(n):
    N = n
    digit = []
  
    # digit extraction of input number
    while (n > 0):
          
        # store the digits in an array
        digit.append(n % 10)
        n /= 10
  
    digit.reverse()
  
    flag = True
    n = digit[0]
    for i in range(1, len(digit), 1):
          
        # n contains first i digits
        n = n * 10 + digit[i]
  
        # n should be divisible by i
        if (n % (i + 1) != 0):
            flag = False
            break
      
    if (flag):
        print(N, "is Polydivisible number.");
    else:
        print(N, "is Not Polydivisible number.")
  
# Driver Code
if __name__ == '__main__':
    n = 345654
    check_polydivisible(n)
  
      
# This code is contributed by
# Sahil_Shelangia

chevron_right


Output:

345654 is Polydivisible number.


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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 Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : sahilshelangia