问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
function getNSu(n){//1,2,3,5,7,9
for(i=0;true;i++){
if(找到第n个素数){
return 第n个素数
}
}
}
function getNSu(n){//1,2,3,5,7,9
for(i=0;true;i++){
if(找到第n个素数){
return 第n个素数
}
}
}
1、素数的定义:一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数
2、当前数k 除以 2至k-1之间的所有数, 如果存在能被整除,则k非素数,如果不存在,则k为素数,
3、k为素数,我们再判断是否是第n个素数,如果是,终止for循环,返回k, 如果不是第n个素数,继续步骤2-3
代码:
function getNSu(n) {
let currentPos = 0 // 默认已经获取到第0个素数
let target = null // 用于储存第n个素数的值
let initVal = 1 // 默认从1开始找第n个素数
if (n <= 0) return target
// 素数的定义: 一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数
for(let k = initVal; true; k++) { // 从初始值initVal开始找素数
let start = 2
let end = k - 1
let flag = true // true:素数 false: 非素数
while (start <= end) {
// 当前数k 除以 2至k-1之间的所有数, 能被整除,则k非素数
if (k % start === 0) { // 非素数,直接结束
flag = false
break
}
start++
}
if (flag) {
currentPos++ // 获取到的素数个数+1
if (currentPos === n) { // 当前素数是第n个素数,终止for循环
target = k
break
}
}
}
return target
}
console.log('第4个素数时', getNSu(4))