gpt4 book ai didi

javascript - 使用 JavaScript 检查质数

转载 作者:行者123 更新时间:2023-11-30 17:36:37 24 4
gpt4 key购买 nike

我现在正在做第三个项目欧拉问题。到目前为止,我已经想出如何解决找到 600851475143 的最大质因数的问题。

我写了一小段代码,可以将一个数的所有质因数放入一个数组中。我遇到的问题是数字可能太大而无法计算。我使用了其他大数字(没有这个大),它们工作正常,但这个只是卡住页面,就像它处于无限循环中一样。这是代码:

var primes = [];
function factor (largestNumber) {
var a = largestNumber;
var b = 2;
while (b < largestNumber) {
if (a % b == 0) {
a /= b;
primes.push(b);
b = 2;

} else {
b++;
}
}
}

factor(600851475143);
console.log(primes);

最佳答案

你的算法不是最优的。

function factor(largestNumber) {
var primes = []; // using local value
var a = largestNumber;
var b = 2;
while (b <= Math.floor(Math.sqrt(a))) { // we do not need to check whole number
// over and over again.
// We could check to a only
// or even to sqrt(a) only
if (a % b == 0) {
a /= b;
primes.push(b);
// there is no reason to reset value
} else {
b++;
}
}
primes.push(a); // rest number would be always prime
return primes;
}

console.log(factor(600851475143));

关于javascript - 使用 JavaScript 检查质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21924639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com