打印所有质数直到某个数字

Tyl*_*r P 1 java

所以我试图打印导致用户输入数字的素数。唯一的问题是它现在不打印数字。我没有发现代码有任何问题,当我与老师核对时,他说它应该可以工作。

static void primeNumbers(int n) {
    System.out.println("All the prime numbers up to " + n + " are -->");

    for (int count = 2; count == n; count++){
      boolean isPrime = true;
      for (int prime = 2; prime < n; prime = prime++) {
        if (n % prime == 0) {
          isPrime = false;
        }
        if(isPrime){
          System.out.println(n);
        }
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

Spe*_*ric 9

您应该使用以下内容:

public static void primeNumbers(int n) {
  System.out.println("All the prime numbers up to " + n + " are -->");

  for (int count = 2; count <= n; count++) {
    int factors = 0;
    for (int prime = 1; prime <= count; prime++) {
      if (count % prime == 0) {
        factors++;
      }
    }
    if (factors == 2) {
      System.out.println(count);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在你之前的代码中,如果n是 2,它会运行一次,然后停止。如果n不是 2,它将永远不会运行。

此外,prime=prime++等于prime++

但是你的逻辑被打破了,因为在原始程序中,你从来没有存储过这个数字有多少个因数。我们有变量factors来帮助我们存储它。如果这个数有两个因数(例如factors==2),那么我们就知道它是素数。

n是 10 时,它会打印:

All the prime numbers up to 10 are -->
2
3
5
7
Run Code Online (Sandbox Code Playgroud)