使用JavaScript中的函数将素数从1(其中1是素数)打印到n并将它们附加到数组

时间:2018-01-10 09:02:37

标签: javascript arrays primes

我有一个程序,我必须打印从1到n的所有素数,然后将它们附加到数组中。我使用solve函数执行此操作,但数组仍为空。我想问为什么会这样?

function solve(args){
    var m=new Array();
    for(let a=1;a<=args;a++){
        for(let b=1;b<=Math.sqrt(a);b++){
            if(a%b==0){
                break;
            }
            m.push(a);
        }
    }
}

4 个答案:

答案 0 :(得分:2)

检查此代码段

solve(args) {
   var primeNumbers = [];
   for(var i=1; i<=args ;i++){
      var isPrime = true;
         for(var j=2; j<i; j++){
            if(i%j === 0){
                isPrime = false;
            }
         }
      if(isPrime === true){
         primeNumbers.push(i);
      }
   }
   console.log(primeNumbers);
}

答案 1 :(得分:0)

使用1初始化数组将解决此问题

dat <- data.table(iris[,1:4])

par(mfrow=c(2,2))
lapply(c(1:ncol(dat)), function(x){ 
 hist(unlist(dat[,..x]), main= paste("Histogram of", c(names(dat[,..x]))))
})

答案 2 :(得分:0)

您可以检查提供的号码是否大于2并将2添加到您的阵列。然后从3迭代到您提供的号码,通过递增2来跳过所有偶数。

function getPrimeNumber(num){
   let primeNumbers = [];
   
   if(num > 2)
    primeNumbers = [2];
    
   for(let a = 3; a <= num; a += 2){
    let isPrime = true;
       for(let b = 2; b <= Math.sqrt(a); b++){
        if(a%b == 0){
            isPrime = false;
            break;
        }
      }
      if(isPrime)
        primeNumbers.push(a);
   }
   
   return primeNumbers;
}

console.log(getPrimeNumber(100));

答案 3 :(得分:0)

每个没有提醒的分数都是 复合数 ,因此无需对所有数字运行模数测试,但仅限于子集主要数字低于它。

 function solve(args){
        var primeNumbers = new Array();
            for(let a=2;a<=args;a++){
                // console.log("lets test: "+a);
                let isPrime = true;

                for(let prime of primeNumbers){
                    if(a % prime == 0){
                        // console.log(a +" is a composition of "+prime );
                        isPrime = false;
                        break;
                    }
                }

                if(isPrime){
                    primeNumbers.push(a);
                }
      }
       return primeNumbers;
    }