Divisors

Divisors of a number are numbers , where and .
Depending on the requirement of the challenge, we have two good methods to calculate divisors.

When we have , and we have few numbers to calculate the divisors of, we can check every number from to , and if , we add and to our set of divisors.

set<int> arr;
for (int i = 1;i < sqrt(N) + 1; i++) {
    if (N % i == 0) {
        arr.insert(i);
        arr.insert(N / i);
    }
}

If and we have a lot of queries, we can build a sieve such that Ar[x] contains the divisors.

vector <vector <int> > divisors(1000001, vector<int> ());
for (int k = 1; k < 1000001; k++) {
    for (int i = 1; i < 1000001/k; i++) {
        divisors[i * k].push_back(k);
    }
}

Now for each query Q, divisors[Q] contains all the divisors.

 
Related challenge for Divisors
Go to Top
  1. Challenge Walkthrough
    Let's walk through this sample challenge and explore the features of the code editor.1 of 6
  2. Review the problem statement
    Each challenge has a problem statement that includes sample inputs and outputs. Some challenges include additional information to help you out.2 of 6
  3. Choose a language
    Select the language you wish to use to solve this challenge.3 of 6
  4. Enter your code
    Code your solution in our custom editor or code in your own environment and upload your solution as a file.4 of 6
  5. Test your code
    You can compile your code and test it for errors and accuracy before submitting.5 of 6
  6. Submit to see results
    When you're ready, submit your solution! Remember, you can go back and refine your code anytime.6 of 6
  1. Check your score