【问题标题】:prime numbers from given value using filter() method javascript使用过滤器()方法javascript从给定值中提取素数
【发布时间】:2020-11-19 12:56:38
【问题描述】:

我坚持这个任务。我想显示 1 和给定整数之间的所有素数。 我认为最好的办法是过滤我的数字数组。这是我的代码:

document.querySelector("#btn109").addEventListener("click", () =>{
  const in109num = document.getElementById("in109num").value;
  const prime = in109num.split(" ");
  const answer109 = document.getElementById("answer109");
    for (let i= 1; i <= prime; i++){
      let primeNumbers =[];
      primeNumbers.push(i)
      answer109.textContent += primeNumbers.filter(numbers => 
        numbers % 3!=0 && 
        numbers % 2!=0 &&
        numbers % 5!=0
        )
    }
});

例如,如果我输入数字 11,现在它会显示 1 7 11 而不是 1 2 3 5 7 11。 我尝试添加等于 2,3,5 的过滤器数字,但过滤器不会生成任何数字:

answer109.textContent += primeNumbers.filter(numbers => 
        numbers % 3!=0 && 
        numbers % 2!=0 &&
        numbers % 5!=0 &&
        numbers == 2 && 
        numbers == 3 &&
        numbers == 5    
        )

我应该如何更改我的代码?

【问题讨论】:

  • 1 不是质数。

标签: javascript arrays sorting filter primes


【解决方案1】:

你需要一个函数来判断一个数是否是素数。试试看:

function isPrime(num) {
  for(var i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num > 1;
}


document.querySelector("#btn109").addEventListener("click", () =>{
  const in109num = document.getElementById("in109num").value;
  const prime = in109num.split(" ");
  let answer109 = document.getElementById("answer109");
  let primeNumbers =[];
  let result = [];
    for (let i= 1; i <= prime; i++){        
          primeNumbers.push(i);
          result = primeNumbers.filter(numbers => isPrime(numbers));
    }
    console.log(result.join());
    answer109.value  = result.join();
});
<input type=textbox" id="in109num" placeholder="input a number"></input>

<button id ="btn109">Get Primes</button>
<input type=textbox" id="answer109" placeholder="result"></input>

【讨论】:

  • 你可以使用i &lt; Math.sqrt(num) 来加快函数的运行速度。
【解决方案2】:

你可以避免 for 循环这样做:

function isPrime(num) {
  for(let i = 2, s = Math.sqrt(num); i <= s; i++)
    if(num % i === 0) return false; 
  return num > 1;
}

document.querySelector("#btn109").addEventListener("click", () =>{
  const in109num = document.getElementById("in109num").value;
  const prime = Number(in109num.split(" "));
  let answer109 = document.getElementById("answer109");
  let result = [...Array(prime).keys()].filter(numbers => isPrime(numbers));
  console.log(result.join());
  answer109.value  = result.join();
});
<input type=textbox" id="in109num" placeholder="input a number"></input>

<button id ="btn109">Get Primes</button>
<input type=textbox" id="answer109" placeholder="result"></input>

isPrime函数解释为here

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多