30pts,玄关求条
查看原帖
30pts,玄关求条
1295820
ClV_Csy楼主2024/10/20 13:05

用欧拉筛预处理+暴力做的,TLE了 Subtask #2的3个点

#include <iostream>
using namespace std;
bool isp[200010];
int pri[100010], k;
int n;
void init() {
	isp[1] = 1; 
	isp[0] = 1;
	int n = 200010;
	for (int i = 2; i <= n; i++) {
		if (isp[i] == 0) {
			pri[++k] = i;
		}
		for (int j = 1; j <= k && i * pri[j] <= n; j++) {
			isp[i * pri[j]] = 1;
			if (i % pri[j] == 0) break;
		}
	}
}
int main() {
	int q;
	scanf("%d", &q);
	init();
	while (q--) {
		scanf("%d", &n);
		long long cnt = 0;
		for (int i = 2; i < n; i++) {
			if (!isp[i] && !isp[n - n / i * i]) cnt++;
		}
		printf("%lld\n", cnt);
	} 
	return 0;
}
2024/10/20 13:05
加载中...