import java.util.Scanner;
public class 质数筛法 {
static boolean[] is_prime = new boolean[1000000];
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
erat();
for (int i = 2; i <= n; i++) {
if (!is_prime[i]) {
//false 代表是质数
System.out.print(i + " ");
}
}
}
/*
* Eratoshenes筛法(埃氏筛法)
*/
static int[] prime = new int[1000000];
static int top;
static void erat() {
for (int i = 2; i * i <= n; i++) { //由于要记录质数 所以 i<=n
if (!is_prime[i]) {
for (int j = i * i; j <= n ; j += i) {
is_prime[j] = true;
}
}
}
for (int i = 2; i <= n; i++) {
if (!is_prime[i]) { //记录质数
prime[top++] = i;
}
}
}
}
[java模板] 质数筛法
最新推荐文章于 2022-01-19 11:05:28 发布