gpt4 book ai didi

javascript - 求250以下的素数之和

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:38 26 4
gpt4 key购买 nike

var sum = 0

for (i = 0; i < 250; i++) {

function checkIfPrime() {

for (factor = 2; factor < i; factor++) {
if (i % factor = 0) {
sum = sum;
}
else {
sum += factor;
}
}
}
}

document.write(sum);

我正在尝试检查 250 以下的所有素数的总和。我收到一条错误消息,指出我在语句 if (i % factor = 0) 中无效 我知道是在原始的 for 语句中创建,但是有什么方法可以在 if 语句中引用它吗?

最佳答案

对于质数计算,您是否考虑过使用 Sieve of Eratosthenes ?这是一种更优雅的确定素数的方法,而且对结果求和也很简单。

var sieve = new Array();
var maxcount = 250;
var maxsieve = 10000;

// Build the Sieve, marking all numbers as possible prime.
for (var i = 2; i < maxsieve; i++)
sieve[i] = 1;

// Use the Sieve to find primes and count them as they are found.
var primes = [ ];
var sum = 0;
for (var prime = 2; prime < maxsieve && primes.length < maxcount; prime++)
{
if (!sieve[prime]) continue;
primes.push(prime); // found a prime, save it
sum += prime;
for (var i = prime * 2; i < maxsieve; i += prime)
sieve[i] = 0; // mark all multiples as non prime
}

document.getElementById("result").value =
"primes: " + primes.join(" ") + "\n"
+ "count: " + primes.length + "\n"
+ "sum: " + sum + "\n";
#result {
width:100%;
height:180px
}
<textarea id="result">
</textarea>

(编辑)使用更新后的算法,现在涉及两个最大值:

  • maxcount 是您希望找到的素数的最大数量
  • maxsieve 是对大到足以包含 maxcount 个素数的筛子的猜测

您必须通过实际检查真实的计数来验证这一点,因为有两个终止条件(1)我们达到了筛子的极限并且找不到更多素数,或者(2)我们实际上找到了我们要找的东西。

如果您要将数字增加到远大于 250 的数字,那么筛选将不再可行,因为它会消耗大量内存。无论如何,我认为这一切都说得通吗?在这一点上,你真的需要自己玩玩筛子,而不是依赖我对它的解释。

关于javascript - 求250以下的素数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138872/

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