Java 检查素数的循环

Java 检查素数的循环,java,if-statement,for-loop,Java,If Statement,For Loop,只是想知道为什么if条件在这里不起作用。您的else子句是错误的。每次n不能被i整除时,它都会打印“素数”。它甚至会打印非素数输入的prime(例如,它会在打印“Not prime”之前打印21的“prime”,因为21%2!=0) 将循环更改为类似以下内容: 7 Prime Prime Prime Prime Prime for(int i=2;i

只是想知道为什么if条件在这里不起作用。

您的else子句是错误的。每次
n
不能被
i
整除时,它都会打印“素数”。它甚至会打印非素数输入的
prime
(例如,它会在打印“Not prime”之前打印21的“prime”,因为21%2!=0)

将循环更改为类似以下内容:

7
Prime
Prime
Prime
Prime
Prime
for(int i=2;iif(nYour else子句是错误的。它每次打印“Prime”时
n
不能被
i
整除。它甚至会打印非Prime输入的
Prime
(例如,它会在打印“not Prime”之前打印21的“Prime”,因为21%2!=0)

将循环更改为类似以下内容:

7
Prime
Prime
Prime
Prime
Prime
for(int i=2;iboolean isPrime=true;
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
for(int i=2;i
布尔值isPrime=true;
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
for(int i=2;i
您的代码将打印素数,直到找到除数

boolean isPrime = true;
    Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
    for (int i = 2; i< n; i++){
        if(n%i==0) {
          System.out.println("Not Prime");
          isPrime=false;
          break;
       }
    }

    if(isPrime) {
       System.out.println("Prime");
    }
for(int i=2;i
另外,您不需要迭代到n,因为在n/2之后将没有可以除以n的数字:-)

检查此代码

for (int i = 2; i< n; i++){
          if( n <= 3){
              System.out.println("Prime");
              break;
          }else if( n%i ==0){
               System.out.println("Not Prime");
               break;
          }else{
              System.out.println("Prime"); --> this line will be printed every time in your loop!
          }
        }
private静态布尔校验素数(int n){
int i=2;

而(i您的代码将打印素数,直到找到除数

boolean isPrime = true;
    Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
    for (int i = 2; i< n; i++){
        if(n%i==0) {
          System.out.println("Not Prime");
          isPrime=false;
          break;
       }
    }

    if(isPrime) {
       System.out.println("Prime");
    }
for(int i=2;i
另外,您不需要迭代到n,因为在n/2之后将没有可以除以n的数字:-)

检查此代码

for (int i = 2; i< n; i++){
          if( n <= 3){
              System.out.println("Prime");
              break;
          }else if( n%i ==0){
               System.out.println("Not Prime");
               break;
          }else{
              System.out.println("Prime"); --> this line will be printed every time in your loop!
          }
        }
private静态布尔校验素数(int n){
int i=2;

while(Itis works fine额外的素数是由于else part导致的)您期望的输出是什么?只需添加break in else part.}else{System.out.println(“prime”);break;}可能重复此操作很好额外的素数是由于else part导致的您期望的输出是什么?只需添加break in else part.}else{System.out.println(“Prime”);break;}的可能副本
for (int i = 2; i< n; i++){
          if( n <= 3){
              System.out.println("Prime");
              break;
          }else if( n%i ==0){
               System.out.println("Not Prime");
               break;
          }else{
              System.out.println("Prime"); --> this line will be printed every time in your loop!
          }
        }
private static boolean checkPrime(int n) {
    int i = 2;
    while(i<=n/2){
        if(n%i++ == 0){
            return false;
        }
    }
    return true;
}