#javascript #prime-factoring
#javascript #разложение на простые множители
Вопрос:
Мне нужно написать функцию простой факторизации, которая возвращает объект, ключи которого являются простым множителем, а значения являются показателями соответствующих простых множителей. Например.
console.log(первичная факторизация(4)) // { 2: 2 } console.log(первичная факторизация(6)) // { 2: 1, 3: 1 }
Мой код пока приведен ниже, но я застрял. Любая помощь очень ценится.
const primeFactorisation = (num) => {
let result = {};
for (let i = 2; i < num; i ) {
if (num % i === 0) {
result[i] = i;
num /= i;
}
}
return result
}
Комментарии:
1. Я дам вам подсказку:
result[i] = i;
должно бытьresult[i] = 1;
, но сначала вам нужно проверить, что оно равно как минимум 0. Кроме того, внутри оператора if поместитеi--
. Это означает, что значениеi
будет отрицаться, поэтомуi
будет таким же при повторном цикле. Редактировать: вложенныйwhile
цикл также будет работать
Ответ №1:
Когда число найдено, увеличьте его на объекте результата вместо присвоения i
объекту результата.
Вам также нужен вложенный цикл для продолжения тестирования числа до тех пор, пока оно больше не будет делиться равномерно, и вам также нужно i <= num
, not i < num
, чтобы был пойман последний фактор:
const primeFactorisation = (num) => {
let result = {};
for (let i = 2; i <= num; i ) {
while (num % i === 0) {
result[i] = (result[i] || 0) 1;
num /= i;
}
}
return result
}
console.log(
primeFactorisation(6),
primeFactorisation(4),
);