gpt4 book ai didi

Javascript获取第n个素数

转载 作者:行者123 更新时间:2023-11-30 15:46:12 25 4
gpt4 key购买 nike

这应该返回第 n 个素数(n 是用户给出的数字)。它适用于前几个数字(1 返回 2,2 返回 3,3 返回 5)但是当给出 5 时,它返回 9,这不是素数(应该是 11)。对于高于此值的其他数字也会发生这种情况(7 应为 17 时返回 15)。

“文档”部分与 HTML 有关,我在其中获取 userValue 并显示质数。

function isPrime(value) {
for(var i = 2; i < value; i++) {
if(value % i === 0) {
return false;
}
}
return value > 1;
}


function generatePrime() {
var userValue = document.getElementById("inputValue").value;
var iter = 1;
var returnValue = 2;
//checks for an integer
if (parseInt(userValue) === parseFloat(userValue)) {
//checks if the user inputted a value above 0
if (userValue > 0) {
//loops to find the correct prime
while (iter < userValue) {
if (isPrime(returnValue)) {
returnValue += 1;
iter += 1;
}
if (!isPrime(returnValue)) {
returnValue += 1;
}
}
}
else {
returnValue = "That is not a number above 0!";
}
}
else {
returnValue = "That is not a number!";
}
document.getElementById("returnValue").innerHTML = returnValue;
}

我需要帮助才能返回正确的数字。

最佳答案

试试这个。

function nextPrime(value) {
if (value > 2) {
var i, q;
do {
i = 3;
value += 2;
q = Math.floor(Math.sqrt(value));
while (i <= q && value % i) {
i += 2;
}
} while (i <= q);
return value;
}
return value === 2 ? 3 : 2;
}


function generatePrime() {
var userValue = document.getElementById("inputValue").value;
var value = 0, result = [];
for (var i = 0; i < userValue; i++) {
value = nextPrime(value);
result.push(value);
}
document.getElementById("returnValue").innerHTML = result[userValue-1];
}
<!DOCTYPE html>
<html>
<head>
<script>

</script>
</head>
<body>

Input value: <input type="text" name="inputValue" id="inputValue"/>
<button onclick="generatePrime()">Prime number</button>
<div id="returnValue">Test: </div>

</body>
</html>

关于Javascript获取第n个素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40042858/

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