簡體   English   中英

為什么代碼顯示素數和非素數兩個答案?

[英]Why does the code show prime and non-prime both answers?

即使在使用標志和中斷之后,我也會從我的 JS 代碼中得到 if 和 else 的結果。 可能的原因是什么?

function myFunction(){
  let x = document.getElementById("int").value;
  const rootx = Math.sqrt(x);
  let textx = "";
  let isPrimeX = true;
  //checking the prime of x input
 for (let i = 2; i<=rootx; i++){
    if(x % i === 0 || x<=1 || x>2){
      textx += x + " is not a prime number"
      let isPrimeX = false;
      break;
    }
 }if(isPrimeX == true){
  textx += x + " is a Prime Number";
 }
 document.getElementById('demo').innerHTML = textx;
  }

在此處輸入圖像描述

您在循環中聲明新的isPrimeX使用這個let isPrimeX = false; . 它應該只是isPrimeX = false;

您正在重新聲明isPrimeX

像這樣刪除let

function myFunction(){
  let x = document.getElementById("int").value;
  const rootx = Math.sqrt(x);
  let textx = "";
  let isPrimeX = true;
  //checking the prime of x input
 for (let i = 2; i<=rootx; i++){
    if(x % i === 0 || x<=1 || x>2){
      textx += x + " is not a prime number"
      isPrimeX = false;
      break;
    }
 }if(isPrimeX == true){
  textx += x + " is a Prime Number";
 }
 document.getElementById('demo').innerHTML = textx;
  }


您正在for循環內重新創建 isPrimeX 變量,而不僅僅是更改它的值。 您可以刪除循環內的let ,或移動textx += x + " is a Prime Number"; 進入一個else塊。

請嘗試再次將 isPrimeX 的聲明更改為 assignment 並查看

function myFunction(){
  let x = document.getElementById("int").value;
  const rootx = Math.sqrt(x);
  let textx = "";
  let isPrimeX = true;
 //checking the prime of x input
  for (let i = 2; i<=rootx; i++){
    if(x % i === 0 || x<=1 || x>2){
     textx += x + " is not a prime number"

     //Change the let to assignment
     isPrimeX = false;

     break;
   }
  }if(isPrimeX == true){
  textx += x + " is a Prime Number";
  }
  document.getElementById('demo').innerHTML = textx;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM