思路:如果一个数是质数,那么它的倍数一定不是质数
import java.math.*;
import java.util.*;
import javax.swing.Spring;
public class Main {
final static int maxn = (int) (1e6 + 5);
static int[] vis = new int[maxn];
static int gcd(int a, int b) {/// 欧几里得辗转相除法
return b == 0 ? a : gcd(b, a % b);
}
public static void sieve(int N) {
for(int i = 0;i <= N;i++)
vis[i] = 1;
vis[0] = 0;
vis[1] = 0;
vis[2] = 1;
for (int i = 2; i <= N; i++) {
if(vis[i] == 1) {
for(int j = 2 * i;j <= N;j += i) {
vis[j] = 0;
}
}
}
}
public static void main(String[] args) {
// int[] book = new int[maxn];
long[] a = new long[maxn];
// int[] b = new int[maxn];
Scanner cin = new Scanner(System.in);
// Map map = new HashMap();
// Set<Character> s = new HashSet<>();
// Set<Set<Character>> ss = new HashSet<>();
// System.out.println(String2);
// String String2 = cin.next();
// char []a = String2.toCharArray();// 字符串拆分成数组
while (cin.hasNext()) {
int n = cin.nextInt();
sieve(n);
for(int i = 1; i <= n;i++) {
if(vis[i] == 1)
System.out.println(i);
}
}
}
}