用JavaScript去找出一个数组里的所有素数(质数)

var
    x,  //定义一个变量x
    r,  
    arr = [];  //定义一个空数组
for (x = 1; x < 100; x++) {
    arr.push(x);  //把1-100依次放到数组arr中
}
function get_primes(arr) {
    return arr.filter(function(val){  //用js的高阶函数filter把数组中不是素数的过滤掉
        for(let i=2;i<val;i++){
            if(val%i===0){
                return false;  //除了1和本身还有其他因素的,则返回false
            }
        }  
        return val>1;  //素数是正整数,而且1不是素数。
    })
}

r = get_primes(arr);

 方法二:

var
    x,  //定义一个变量x
    r,  
    arr = [];  //定义一个空数组
for (x = 1; x < 100; x++) {
    arr.push(x);  //把1-100依次放到数组arr中
}
function get_primes(arr) {
    return arr.filter((n)=>{
      if(n<3){
    	return n > 1;
      }
      for(let i = 2;i<=Math.sqrt(n);i++){
    	if(n % i === 0){
    	  return false;
    	}
      }
      return true;
    });
}

r = get_primes(arr);

方法三:

var
    x,  //定义一个变量x
    r,  
    arr = [];  //定义一个空数组
for (x = 1; x < 100; x++) {
    arr.push(x);  //把1-100依次放到数组arr中
}
function get_primes(arr) {
    return arr.filter(
        x => {
            let result = true;
            let end = Math.sqrt(x);
            let flag = 0;
            for (let i = 2; i <= end; i++) {
                if (x % i == 0) {
                    flag = 1;
                    break;
                }
            }
            if (x == 1) {
                //单独判断1是不是素数
                result = false;
            } else if (flag == 0) {
                //素数
                result = true;
            } else {
                //合数
                result = false;
            }
            return result;
        }
    );
}

r = get_primes(arr);

还有其他很多种办法可以实现去判断一个数组里的哪些元素是素数,大家也可以贴出自己的方法,来一起交流,一起进步,如有不对的地方,欢迎指教。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值