Я новичок в javascript и изо всех сил пытаюсь понять, почему это не работает.
function largestPrimeFactor(num) {
var primeFactors = [];
for (var i = 2; i < num; i++) {
// check if iter i is prime
if (checkIfPrime(i)) {
// if so, see if its a factor of num
while (num % i === 0) {
num /= i;
primeFactors.push(i);
console.log(primeFactors);
console.log(num);
}
}
if (num === 1) {
// return Math.max.apply(Math, primeFactors)
console.log(primeFactors);
console.log(Math.max.apply(Math, primeFactors));
}
}
}
function checkIfPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
console.log(largestPrimeFactor(13195));
Окончательный console.log никогда не срабатывает для последнего простого числа 29. Я также никогда не ввожу последний случай if(num === 1)
, и я тоже не знаю, почему...
Когда я повторяю до 29, checkIfPrime(i)
должно быть true
, а затем после того, как 29 / 29
устанавливает num
в 1, последний случай if
тоже должен работать.
Почему это не работает??
Второй Q - есть
return Math.max.apply(Math, primeFactors)
правильный способ вернуть максимальное значение из массива целых чисел?
Спасибо!
i
иprimeFactors.pop()
в этот момент оба будут равны 29. - person Jaromanda X   schedule 27.02.2018