筛质数 -2025/11/18

#include<bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;

int n;
int prime[N];
bool st[N];
int cnt;

//埃式筛法
void ai_prime(int x){
	for(int i = 2; i <= x; i++){
		if(!st[i]) prime[++ cnt] = i;
		for(int j = i + i; j <= x; j += i) st[j] = true;
	}
}

//线性筛法
void xian_prime(int x){
	for(int i = 2; i <= x; i++){
		if(!st[i]) prime[cnt ++] = i;
		for(int j = 0; prime[j] <= n / i; j++){
			st[i * prime[j]] = 1;
			if(i % prime[j] == 0) break;
		}
	}
}

int main(){
	cin >> n;
	xian_prime(n);
	cout << cnt << "\n";
	return 0;
}
posted @ 2025-11-28 23:00  XYu1230  阅读(4)  评论(0)    收藏  举报