我有一个程序,我必须打印从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);
}
}
}
答案 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;
}