首页 > 解决方案 > 在数组中寻找素数以存储在Javascript中的另一个数组中

问题描述

我试图构建一个程序来查看数组,获取任何素数,然后将它们存储在单独的数组中。我尝试混合和匹配一些代码片段,它似乎在大多数情况下都有效,但有时会给出一个非质数(在本例中为 33,可被 3 和 11 整除)。所有其他数字似乎都是正确的。会不会是我遗漏的小东西?任何和所有的帮助表示赞赏。谢谢!

var array = [33,23,5,7,10,20,30,12,37];
primes(array);



function primes(arr){
    var arrayLength = arr.length;
    var primeArray = [];

    function primeNum(arrElement){
        if (arrElement <= 1){
            console.log(arrElement + " is not a valid test number.");
        }
        for (var x = 2; x < arrElement; x++){
            if (arrElement % x === 0){
                return false;
            }
            return true;
        }
    
    }

    for (var y = 0; y <= arrayLength - 1; y++){
        if(primeNum(arr[y])){
            primeArray.push(arr[y]);
        }
    }
    console.log(primeArray);
    }

输出给出:(5) [33, 23, 5, 7, 37]

标签: javascriptarrays

解决方案


var array = [33, 23, 5, 7, 10, 20, 30, 12, 37];
primes(array);



function primes(arr) {
  var arrayLength = arr.length;
  var primeArray = [];

  function primeNum(arrElement) {
    if (arrElement <= 1) {
      console.log(arrElement + " is not a valid test number.");
    }
    for (var x = 2; x < arrElement; x++) {
      if (arrElement % x === 0) {
        return false;
      }
    }
    return true;
  }

  for (var y = 0; y <= arrayLength - 1; y++) {
    if (primeNum(arr[y])) {
      primeArray.push(arr[y]);
    }
  }
  console.log(primeArray);
}

在should 之外funcation primeNumreturn truefor 循环。


推荐阅读