function factors(n) { var num_factors = [], i; for (i = 1; i <= Math.floor(Math.sqrt(n)); i += 1) if (n % i === 0) { num_factors.push(i); if (n / i !== i) num_factors.push(n / i); } num_factors.sort(function(x, y) { return x - y;}); // numeric sort return num_factors; } console.log(factors(15)); // [1,3,5,15] console.log(factors(16)); // [1,2,4,8,16] console.log(factors(17)); // [1,17]