获取某个数内的质数

思路:

1,排除传入参数为小于2的数(if(param < 2)return;);

2,建立有一个元素2的数组(let arr = [2]);

3,建立一个初始值为3(i = 3),最大值为传入参数的循环(i <= param),注意偶数不可能为指数,所以循环的时候直接去掉偶数,直接循环奇数(i += 2);

4,定义当前循环的标记(flag = true);

5,建立一个初始值为3(j = 3),最大值为当前值(j < i),注意能被偶数整出的数就能被2整除,所以排除所有偶数,直接循环奇数(j += 2);

6,判断当前值i是否能被3~i之间的某个奇数整除(i%j === 0),如果整除就flag = false 并且退出当前循环(break);

7,最后在外部循环最后位置进行判断,如果flag有效,就将该值push进数组(if(flag){arr.push(i)})

代码:

function primeNum(param){
	if(param < 2)return ;
	let arr = [2];
	for(let i = 3; i <= param;i += 2){
		let flag = true;
		for(let j = 3;j < i; j += 2){
			if(i%j === 0){
				flag = false;
				break ;
			}
		}
		if(flag)arr.push(i);
	}
	return arr;
}

测试:

console.log(primeNum(100));//[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
console.log(primeNum(3));//[2,3]

注意:

1,两次循环都只用循环奇数,减少循环次数

2,在循环开始就将2排除

3,当前循环的标记flag,在外部循环push

其他

[我的博客,欢迎交流!](http://rattenking.gitee.io/stone/index.html)

[我的CSDN博客,欢迎交流!](https://blog.csdn.net/m0_38082783)

[微信小程序专栏](https://blog.csdn.net/column/details/18335.html)

[前端笔记专栏](https://blog.csdn.net/column/details/18321.html)

[微信小程序实现部分高德地图功能的DEMO下载](http://download.csdn.net/download/m0_38082783/10244082)

[微信小程序实现MUI的部分效果的DEMO下载](http://download.csdn.net/download/m0_38082783/10196944)

[微信小程序实现MUI的GIT项目地址](https://github.com/Rattenking/WXTUI-DEMO)

[微信小程序实例列表](http://blog.csdn.net/m0_38082783/article/details/78853722)

[前端笔记列表](http://blog.csdn.net/m0_38082783/article/details/79208205)

[游戏列表](http://blog.csdn.net/m0_38082783/article/details/79035621)

原文地址:https://www.cnblogs.com/linewman/p/9918544.html