import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.*;
public class Main {
public static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
public static StreamTokenizer cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
public static PrintWriter count = new PrintWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws Exception {
searchPrime(100);
for (int i = 0;primes[i]!=0 &&i < primes.length; i++) {
count.println(primes[i]);
}
closeAll();
}
public static int[] primes;
public static void searchPrime(int n) {
//nums将保留所有素数
boolean[] flag = new boolean[n + 1];
primes = new int[n / 2 + 1];
int index = 0;
//全设为true
for (int i = 0; i < n + 1; i++) {
flag[i] = true;
}
flag[0] = false;
flag[1] = false;
for (int i = 2; i <= n; i++) {
if (flag[i] == true) {
//这是个素数 要加入primes
primes[index++] = i;
//遍历primes之
for (int j = 0; primes[j] != 0 && primes[j] * i < n + 1 && j < primes.length; j++) {
flag[primes[j] * i] = false;
}
} else {
//是个合数要注意最小约数
for (int j = 0; primes[j] != 0 && primes[j] * i < n + 1 && j < primes.length; j++) {
flag[primes[j] * i] = false;
if (i % primes[j] == 0) {
break;
}
}
}
}
}
public static int nextInt() throws Exception {
cin.nextToken();
return (int) cin.nval;
}
public static long nextLong() throws Exception {
cin.nextToken();
return (long) cin.nval;
}
public static double nextDouble() throws Exception {
cin.nextToken();
return cin.nval;
}
public static String nextString() throws Exception {
cin.nextToken();
return cin.sval;
}
public static String Line() throws Exception {
String p = "";
p = in.readLine();
return p;
}
public static void closeAll() throws Exception {
count.close();
in.close();
out.close();
}
}
易错点:flag[prims[j] * i] 经常忘记判越界