java - 检查素数的循环

标签 java if-statement for-loop

package pureTest;
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class test3 {    
        public static void main(String[] args) {
            /* Enter your code here. */
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            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");
              }
            }

          }
      }

输入7;输出是 Prime 的重复:

7
Prime
Prime
Prime
Prime
Prime

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

最佳答案

你的代码将打印质数,直到找到除数!

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!
          }
        }

而且你不需要迭代直到 n,因为在 n/2 之后就没有数字可以整除 n :-)

检查此代码...

private static boolean checkPrime(int n) {
    int i = 2;
    while(i<=n/2){
        if(n%i++ == 0){
            return false;
        }
    }
    return true;
}

关于java - 检查素数的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889693/

相关文章:

java - 无法将 jsp session 解析为整数

javascript - 在处理中通过字符串将图像加载到 Canvas

python:验证条件和引发异常的最佳方法

ios - 如何在 Swift 的嵌套 for 循环中访问父索引?

java - 打破Java中的for循环

java - 如何将参数传递到类中,以便在构造函数中传递其参数时 JFrame 会移动?

java - 日期时间格式化程序java

java - 如何在文本文件更改时重新初始化 java servlet

jquery - 如果 sibling 有一个特定的类,则隐藏一个 div

python - 我该如何压缩循环,否则