实现一个函数,获取素数(质数)-CSDN博客

166 阅读1分钟

1.判断素数

function isPrinme(n){
	if(n===0||n===1) return false
	if(n===2) return true
	for(let i = 2; i <= Math.sqrt(n); i++){
		if(n % i === 0){
			return false
		}
	} 
	return true
}

2.求n以内的所有素数

function getPrinmes(n){
	let set = new Set()
	for(let i = 2; i < n;i++){
		let flag = true
		for(let j = 2; j<= Math.sqrt(i);j++){
			if(i%j===0){
				flag = false
				break;
			}
		}
		if(flag) set.add(i)
	}
	return [...set]
}

3.面试题:实现一个函数,每次调用返回下一个质数,要求不使用全局变量,且函数本身不接受任何参数

function getNextPrinme(){
	let i = 0;
	return function(){
		i++
		while(!isPrinme(i)){
			i++
		}
		return i
	}
}
let getPrime = getNextPrinme()
getPrime() // 2
getPrime() // 3
getPrime() // 5