Queries to Print All the Divisors of n using C++


In the given problem, we are required to print all the divisors of a given integer n.

Input: 15
Output: 1 3 5 15
Explanation
Divisors of 15 are: 1,3, 5, 15

Input: 30
Output: 1 2 3 5 15 30

In the given problem, we can apply the approach used in the sieve of Eratosthenes for finding all the divisors of n.

Approach to find The Solution

In the given approach, we will apply the concept in which the sieve of Eratosthenes is based and find the divisors of n.

Example

#include <bits/stdc++.h>
#define MOD 1000000007

using namespace std;

vector<int> divisors[100001]; // our vector containing number with all of its divisors
void findsieve(int max) { // filling data in vector divisors till 10e5
   for(int i = 1; i <= max; i++) {
      for(int j = i; j <= max; j += i)
         divisors[j].push_back(i);
   }
}
void __print(int n){ // the function to print divisors
   for(auto x : divisors[n])
      cout << x << " ";
   cout << "\n";
}

int main() {
   findsieve(100000); // we hardcode the sieve and divisors till 10e5
   int n = 6; // the given n
   __print(n);
   n = 30; // new n
   __print(n);
   return 0;
}

Output

1 2 3 6
1 2 3 5 6 10 15 30

Explanation of the above code

In this approach, we follow the same concept as the sieve of Eratosthenes. We find the divisors of every number till 105. When we are given q queries, we don’t need to find the divisors, so this drastically reduces our time complexity when asked q queries. Hence, our complexity becomes O(Q*N), where Q is the number of queries we tackle, and N is the number of divisors of n.

Conclusion

In this article, we solve a problem: Queries to print all the divisors of n where we apply the principle of the sieve of Eratosthenes. We also learned the C++ program for this problem and the complete approach ( Normal) by which we solved this problem. We can write the same program in other languages such as C, java, python, and other languages. We hope you find this article helpful.

Updated on: 26-Nov-2021

322 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements