文章

20

粉丝

412

获赞

12

访问

162.4k

头像
素数筛选法
P1833 山东大学机试
发布于2021年4月23日 19:59
阅读数 8.7k

#include <iostream>
#include <vector>
using namespace std;

const int MAXN = 1e7+5;
vector<long long> prime;
bool isPrime[MAXN];

void init() {
	for(int i = 0;i < MAXN;i++)
		isPrime[i] = true;
	for(long long i = 2;i < MAXN;i++) {
		if(!isPrime[i]) continue;
		prime.push_back(i);
		for(long long j = i*i;j < MAXN;j += i) //如果i,j是int型会Runtime Error 
			isPrime[j] = false;
	}
}

int main() {
	long long n, cnt = 0;
	cin >> n;
	init();
	for(int i = 0;i < prime.size() && prime[i] <= n;i++)
		cnt++;
	cout << cnt << endl;
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发