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.
Approach: The idea is very simple.
- Extract all the digits of the array and store them in an array.
- Pick first 2 digits and form a number and check if it is divisible by 2.
- Pick ith digit and append to the existing number and check if the number is divisible by i.
- 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 as follows:
C++
// 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); } |
Java
// 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); } } |
Python3
# 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 = digit[:: - 1 ] 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 # Improved by Madhushree Sannigrahi |
C#
// 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 |
Javascript
<script> // Javascript program to check whether // a number is polydivisible or not // function to check polydivisible // number function check_polydivisible(n) { let N = n; let digit = []; // digit extraction of input number while (n > 0) { // store the digits in an array digit.push(n % 10); n = parseInt(n / 10, 10); } digit.reverse(); let flag = true ; n = digit[0]; for (let i = 1; i < digit.length; 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) document.write(N + " is Polydivisible number." + "</br>" ); else document.write(N + " is Not Polydivisible number." ); } let n = 345654; check_polydivisible(n); </script> |
Output:
345654 is Polydivisible number.
Time Complexity: O(log10n)
Auxiliary Space: O(log10n)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!