题目描述
用筛法求之N内的素数
输入
N
输出
0~N的素数
样例输入
100
样例输出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
参考解答
import java.util.Vector;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
count(sc.nextInt());
}
private static void count(int n) {
Vector<Boolean> is_prime = new Vector<Boolean>(n + 1);
Vector<Integer> prime = new Vector<Integer>();
for (int i = 0; i <= n; i++) {
is_prime.add(true);
}
int prime_sum = 0;
for (int i = 2; i <= n; i++) {
if (is_prime.get(i)) {
prime.add(prime_sum++, i);
}
for (int j = 0; j < prime_sum && prime.get(j) * i <= n; j++) {
is_prime.set(prime.get(j) * i, false);
if (i % prime.get(j) == 0) {
break;
}
}
}
for (int prime_num : prime) {
System.out.println(prime_num);
}
}
}