思路:
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)