先上代码:
import package math;
import java.util.Scanner;
public class first{
public static void main(String args[]) {
int len;
Scanner in = new Scanner(System.in);
len = in.nextInt();
boolean[] prime = new boolean[len];
for(int i = 0; i < prime.length; i++ ) {
prime[i] = true;
}
for(int i = 2; i < prime.length; i++) {
if(prime[i]) {
for(int k = 2; k*i < len; k++ ) {
prime[k*i] = false;
}
}
}
int j = 0;
for(int i = 2; i < prime.length; i++) {
if(prime[i]) {
j++;
System.out.print(i + "\t");
if(j % 10 == 0) {
System.out.print("\n");
}
}
}
}
}
1.从2开始遍历,2的倍数均为合数。将合数记为false。
2.每遍历到一个布尔型为true的整数,那么这个数字便是素数。
3是素数,3的倍数均为合数。
…………
遍历到布尔型为true的书即为素数。将合书布尔型变为false。