В этой статье мы продемонстрируем различные подходы к написанию программы JavaScript для поиска всех делителей числа. У нас будет входное число, и мы напечатаем все делители этого числа в виде результирующего массива.
Методы поиска всех делителей числа
- Наивный подход
- Рекурсивный подход
Метод 1: Наивный подход
В этом методе мы будем использовать цикл JavaScript для перебора возможных коэффициентов и метод Math.pow() для получения квадратного корня из числа. Вместо метода Math.pow() мы также можем использовать Math.sqrt() или условие i*i < n.
Пример:
Javascript
function
prime(n) {
let result = [1,n];
for
(let i = 2; i < Math.pow(n, 0.5); i++) {
if
(n % i == 0) {
result.push(i);
result.push(n / i);
}
}
return
result.sort((a, b) => a - b);
}
const num = 90;
console.log(
"Prime factors of "
+
num +
": "
+ prime(num));
Выход
Prime factors of 90: 1,2,3,5,6,9,10,15,18,30,45,90
Метод 2: Рекурсивный подход
В этом методе мы будем рекурсивно вызывать функцию и возвращать выходные данные с помощью оператора расширения, чтобы получить выходные данные массива.
Пример:
Javascript
function
recursiveFactor(n, d) {
if
(n < 1)
return
[];
if
(n == 1)
return
[1];
if
(n == 2)
return
[1,2];
if
(n/d<2)
return
[n];
if
(n % d == 0)
return
[d, ...recursiveFactor(n, d + 1)];
return
recursiveFactor(n, d + 1);
}
const num = 85;
console.log(
"All factors of "
+
num +
": "
+
recursiveFactor(num, 1)
);
Выход
All factors of 85: 1,5,17,85