繁体   English   中英

javascript中的质数检查器函数仅从包含多个质数的数组中返回一个质数

[英]Prime Checker function in javascript is only returning one prime number from an array containing multiple prime numbers

这是我用来遍历数组并挑选素数并将它们推送到空数组的代码。 我的问题是,当我节点这个时,它只返回代码在数组中找到的第一个素数,而不管数组中是否有更多素数。 我无法发现我可能遗漏了什么......

 let primeXray = function(num) {
    if (num < 2)
        return false;

    for (i = 2; i < num; i++) {
        if (num % i === 0) {
            return false;
        }
    }
    return true;
}

let choosePrimes = function(nums) {
    let primeBlock = [];
    for (i = 0; i < nums.length; i++) {
        let num = nums[i];
        if (primeXray(num)) {
            primeBlock.push(num);
        }
    }
    return primeBlock;
}




console.log(choosePrimes([36, 48, 9, 13, 19])); // [ 13, 19 ]
console.log(choosePrimes([5, 6, 4, 11, 2017])); // [ 5, 11, 2017 ]

问题是你没有用letvar声明i ,所以它是由 JS 创建并重用的。 你的primeXray改变了i干扰了其他function

let primeXray = function(num) {
    if (num < 2)
        return false;

    for (let i = 2; i < num; i++) {
        if (num % i === 0)
            return false;
    }
    return true;
}

let choosePrimes = function(nums) {
    let primeBlock = [];
    for (let i = 0; i < nums.length; i++) {
        let num = nums[i];
        if (primeXray(num))
            primeBlock.push(num);
    }
    return primeBlock;
}

打印 1-50 中的质数; 在 JavaScript 中使用循环

for (var counter = 0; counter <= 50; counter++) {

var notPrime = false;
for (let i = 2; i <= counter; i++) {
    if (counter%i===0 && i!==counter) {
        notPrime = true;
    }
}
if (notPrime === false) {
            console.log(counter);
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM