gpt4 book ai didi

javascript - checkPrime 函数返回不正确的值

转载 作者:行者123 更新时间:2023-11-30 20:29:54 27 4
gpt4 key购买 nike

numbers = [];
for (x = 1; x <= 1e4; x++) {
numbers.push(x)
}
//console.log(numbers)

function checkPrime(num) {
if (num == 1 || num == 0) {
return 'It is a separate case'
}
if (num == 2) {
return num + ' is prime'
}
for (var i = 2; i < num; i++) {
if (num in numbers) {
if (num % i === 0) return num + ' is not prime';
else {
return num + ' is prime';
}
return num !== 1;
} else {
return num + ' is not in range';
}
}

}
console.log(checkPrime(27));

嗨。在上面的代码中,我试图创建一个函数来返回有关数字是否为素数的信息。

然而,它在某些情况下会失败。像例如。在 27 或 145 的情况下,它返回值是质数,这显然是错误的。我怎样才能修改这个程序以使其工作?

此外,合并数字 2 和其余素数的情况的最聪明方法是什么?

提前致谢,抱歉,如果这太基础了,我在其他地方找不到正确的答案。

最佳答案

在完成检查所有数字直到它本身为 -1 之前,您要放置声明该数字为质数的“else”子句。

为了达到最佳效果,您不需要循环直到数字 ( < num)。直到数字的平方根。 (甚至比循环到 num/2 更好)例如:当循环达到 13 时,可以看出 167 是质数。13*13 = 169 > 167 因此您可以停止并安全地确认 167 是质数。

对于数字 2,有一个单独的案例是正确的。

下面是检查单个值是否为质数的代码:

function checkPrime(num) {
if (num == 1 || num === 0) {
return 'It is a separate case'
}
if (num == 2) {
return num + ' is prime'
}
for (var i = 2; i < Math.sqrt(num); i++) {
if (num % i === 0) return num + ' is not prime';
}
return num + ' is prime';
}
alert(checkPrime(27));

关于javascript - checkPrime 函数返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470657/

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