返回仅具有素数的新数组的函数JavaScript

时间:2017-09-19 18:26:18

标签: javascript arrays loops for-loop nested-loops


你好朋友,
我想创建只返回带有素数的新数组的函数。 我的函数应该只返回素数,但它不仅返回素数。 你能这么好地告诉我如何改进我的功能(或者做出核心的)?
谢谢你提前!!

function getAllPrimeNumber(array, num) {
    array = new Array();
        for (var i = 2; i <= num; i++) {
            for(var j = 2; j < i; j++){
                if(i % j==0){break; }
                array.push(i);
            }

        }
    return array;
}
console.log(getAllPrimeNumber([], 5)); //[3, 5, 5, 5]
console.log(getAllPrimeNumber([], 9)); //[3, 5, 5, 5, 7, 7, 7, 7, 7, 9]

1 个答案:

答案 0 :(得分:0)

您需要检查i无法完全除以2到i / 2之间的所有数字(不包括自身)(如果数字为2),然后只推i进入数组:

function getAllPrimeNumber(num) {
  var array = [];
  var isPrime;
  for (var i = 2; i <= num; i++) {    
    for (var j = 2; (isPrime = i === j || i % j !== 0) && j <= i / 2; j++) {}

    isPrime && array.push(i);
  }
  return array;
}
console.log(getAllPrimeNumber(5));
console.log(getAllPrimeNumber(9));