实现一个函数,获取素数(质数)

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

猜你喜欢

转载自blog.csdn.net/m0_37285193/article/details/121139856