本地跑、在线ide跑都能对上,评测过不去
查看原帖
本地跑、在线ide跑都能对上,评测过不去
759274
Stevehim楼主2023/1/2 19:24

RT,测了测试点1的数据

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

bool prime[50020];
int prime2[50020];
int pr = 1;


void yu() {
//	cout << "start" << endl;
	memset(prime, 1, sizeof(prime));
	prime[1] = false;
	for (int i = 2; i <= 50000; i++) {
		if (prime[i]) {
			prime2[pr++] = i;
//			cout << prime2[pr - 1] << endl;
		}
//		cout << "half circle" << endl;
		for (int j = 1; j <= pr && i * prime2[j] <= 50000; j++) {
			prime[i * prime2[j]] = 0;
			if (i % prime2[j] == 0) {
				break;
			}
		}
//		cout << "one circle" << endl;
	}
	return;
}

bool check(int x) {
	for (int i = 1; i < pr; i++) {
		if (x % prime2[i] == 0 && x != prime2[i]) {
			return false;
		}
	}
	return true;
}

int n, q;

int main() {
	std::ios::sync_with_stdio(0);
	yu(); //跑出五万以内的质数
	long long l, r;
	int ans;
	cin >> l >> r;
	for (int i = l; i <= r; i++) {
		if (check(i)) {
			ans++;
		}
	}
	cout << ans;
	return 0;
}

2023/1/2 19:24
加载中...