【发布时间】:2017-05-28 08:33:39
【问题描述】:
我正在尝试填写algorithm challenge to find the largest prime factor of 600851475143。我不一定要求答案。只是想弄清楚为什么这段代码不起作用。为什么它返回“未定义”而不是数字?
let isPrime = n => {
let div = n - 1;
while (div > 1) {
if (n % div == 0) return false;
div--;
}
return true;
};
let primeFactor = x => {
for (let i = Math.floor(x / 2); i > 1; i--) {
if (x % i == 0 && isPrime(i) == true) {
return i;
}
}
};
console.log(primeFactor(35)); // 7
console.log(primeFactor(13195)); // 29
console.log(primeFactor(600851475143)); // undefined
【问题讨论】:
-
你在哪里运行你的代码?
-
我把它贴在 JSBin 上
-
它在我的本地 Node.js 副本中运行了 5 分钟,但尚未完成。我认为浏览器实现可能只是触发 此脚本没有响应 对话框。
-
@tyl-er 前几天我在回答一个使用 JSBin 的问题,由于某种原因,他们的脚本收到不一致的答案,我建议您尝试其他服务,除此之外,从 300000000000 到 1 的循环需要很长时间,但应该可以,我建议你改变你的方法
-
@NickA:啊,你是对的,在这种情况下它只有 40 位。
标签: javascript algorithm