number-theory
Version:
Number theory functions for javascript.
39 lines (34 loc) • 939 B
JavaScript
;
var factor = require('./factor');
var incMixed = require('./inc_mixed');
/**
* Determines all of the divisors for a given number.
* @param {Number} n Number for which to find the factors.
* @return {Array} A list of all divisors for the given number.
* @module number-theory
* @author Ryan Sandor Richards
*/
module.exports = function divisors(n) {
var factors = factor(n);
var powers = factors.map(function (factor) {
return 0;
});
var maxPowers = factors.map(function (factor) {
return factor.power;
});
var divisors = [1];
while (true) {
powers = incMixed(powers, maxPowers);
var d = powers.map(function (m, i) {
return Math.pow(factors[i].prime, m);
}).reduce(function (memo, curr) {
return memo * curr;
}, 1);
if (d === 1) break;
divisors.push(d);
}
divisors.sort(function (a, b) {
return parseInt(a) - parseInt(b);
});
return divisors;
};