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 . 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.
```

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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.

 `// CPP program to check whether ` `// a number is polydivisible or not ` `#include ` `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); ` `} `

 `// 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 digit = ``new` `Vector(); ` `     `  `        ``// 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); ` `    ``} ` `} `

 `# 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 `

 `// C# program to check whether ` `// a number is polydivisible or not ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG  ` `{ ` `     `  `    ``// function to check polydivisible ` `    ``// number ` `    ``static` `void` `check_polydivisible(``int` `n) ` `    ``{ ` `        ``int` `N = n; ` `        ``List<``int``> digit = ``new` `List<``int``>(); ` `     `  `        ``// digit extraction of input number ` `        ``while` `(n > 0)  ` `        ``{ ` `     `  `            ``// store the digits in an array ` `            ``digit.Add((``int``)n % 10); ` `            ``n /= 10; ` `        ``} ` `        ``digit.Reverse(); ` `     `  `        ``bool` `flag = ``true``; ` `        ``n = digit[0]; ` `        ``for` `(``int` `i = 1; i < digit.Count; 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) ` `            ``Console.WriteLine(N +  ` `                    ``" is Polydivisible number."``); ` `        ``else` `            ``Console.WriteLine(N +  ` `                    ``" is Not Polydivisible number."``); ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main (String[] args)  ` `    ``{ ` `        ``int` `n = 345654; ` `        ``check_polydivisible(n); ` `    ``} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:
```345654 is Polydivisible number.
```

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.

Article Tags :