Third solution for Rosetta Code: Factors of an integer

What is your hint or solution suggestion?

I recently submitted a solution, but I realized the solution would be far faster using time complexity O(sqrt(n)). This is because 50% of factors are less than or equal to sqrt(n). The lower half of factors are found, then the upper half is mapped by performing n/i for each factor.

Solution 3
function factors(num) {
  var arr1 = Array
    .from(Array(Math.ceil(Math.sqrt(num + 1))), (_, i) => i)
    .filter(i => num % i === 0)
  var arr2 = arr1.concat(arr1.map(i=>num/i).reverse())
  var arr3 = [...new Set(arr2)];
  return arr3
}

Challenge: Factors of an integer

Link to the challenge: