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/