【问题标题】:Printing prime numbers - console.log loop result to html打印素数 - console.log 循环结果到 html
【发布时间】:2021-02-06 19:55:17
【问题描述】:

我的目标是打印出低于输入原始值的素数(不包括输入的数字)。当我编写函数时,我可以使用console.log(i) 看到我需要的结果,但是当我将其更改为return i 时,我在调用函数showPrime(n) 时没有得到结果。我认为问题是我如何在 showPrime() 中返回结果,我需要创建一个空字符串吗?

function isPrime(n) {
  //2 is an exception
  if ((n <= 1) || n % 2 == 0) {
    return false;
  } else {
    return true;
  };
};

function showPrime(n) {
  let numbies = []
  for (let i = 0; i < n; i++) {
    if (isPrime(i) === true) {
      console.log(i)
    }
  }
}

//user interface logic
$(document).ready(function() {
  $("form").submit(function(event) {
    event.preventDefault();
    n = $("input#numberInput").val();
    alert(showPrime(n));
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
  <h1>Prime Number Sifter</h1>
  <p>When you input a number, the program will return all prime numbers below it (not including the number). <em>Note: While 2 is a prime number, the program won't return anything since 1 is not!</em></p>
  <form>
    <div class="form-group">
      <label for="numberInput">Input </label>
      <input type="integer" class="form-control" id="numberInput" placeholder="Enter number">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
  <br>
  <div id="output">
    <p><span class="show"></span></p>
  </div>

【问题讨论】:

    标签: javascript for-loop iterator


    【解决方案1】:

    如果您使用return,它将停止函数执行,因此您将在第一个数字之后停止(实际上只有 0)。

    你应该取一个数字数组并返回它

    function isPrime(n) {
      //2 is an exception
      if ((n <= 1) || n % 2 == 0) {
        return false;
      } else {
        return true;
      };
    };
    
    function showPrime(n) {
      let numbies = []
      for (let i = 0; i < n; i++) {
        if (isPrime(i) === true) {
          // console.log(i)
          numbies.push(i)
        }
      }  
      return numbies;
    }
    
    
    //user interface logic
    $(document).ready(function() {
      $("form").submit(function(event) {
        event.preventDefault();
        n = $("input#numberInput").val();
        alert(showPrime(n));
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <body>
      <h1>Prime Number Sifter</h1>
      <p>When you input a number, the program will return all prime numbers below it (not including the number). <em>Note: While 2 is a prime number, the program won't return anything since 1 is not!</em></p>
      <form>
        <div class="form-group">
          <label for="numberInput">Input </label>
          <input type="integer" class="form-control" id="numberInput" placeholder="Enter number">
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
      </form>
      <br>
      <div id="output">
        <p><span class="show"></span></p>
      </div>

    如果您只想要最大的素数,请进行逆循环。

    function showPrime(n) {
      let numbies = []
      for (let i = n; i >= 0; i--) {
        if (isPrime(i) === true) {
          // console.log(i)
          return i;
        }
      }  
      return 0;
    }
    
    

    【讨论】:

      【解决方案2】:

      return 语句中断并结束函数。如果您将return i 放入 for 循环中(如果我理解正确的话),函数将结束并返回 0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-02
        • 1970-01-01
        • 2020-03-22
        • 2010-12-21
        • 2017-05-20
        • 2022-10-06
        相关资源
        最近更新 更多