According to this post, we can get all divisors of a number through the following codes.
for (int i = 1; i <= num; ++i){ if (num % i == 0) cout << i << endl; }
For example, the divisors of number 24
are 1 2 3 4 6 8 12 24
.
After searching some related posts, I did not find any good solutions. Is there any efficient way to accomplish this?
My solution:
However, it doesn't seem to be a good one.
The formula for calculating the total number of divisor of a number ′n′ where n can be represent as powers of prime numbers is shown as. If N=paqbrc . Then total number of divisors =(a+1)(b+1)(c+1).
Once you have the prime factorization, there is a way to find the number of divisors. Add one to each of the exponents on each individual factor and then multiply the exponents together. Save this answer.
What is the formula to find a divisor? If the remainder is 0, then Divisor = Dividend ÷ Quotient. If the remainder is not 0, then Divisor = (Dividend – Remainder) /Quotient.
Factors are paired. 1
and 24
, 2
and 12
, 3
and 8
, 4
and 6
.
An improvement of your algorithm could be to iterate to the square root of num
instead of all the way to num
, and then calculate the paired factors using num / i
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With