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// numbervoid 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 notimport 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# numberdef 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 Codeif __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 notusing 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> |
345654 is Polydivisible number.
Time Complexity: O(log10n)
Auxiliary Space: O(log10n)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
