時間複雜度接近O(n)
歐拉篩模板
bool p[MAX_N];
int pr[205];
void Euler() {
int cnt = 0;
memset(p, true, sizeof(p));
p[0] = p[1] = false; //特例
for (int i = 2; i < 1000; ++i) {
if (p[i]) pr[cnt++] = i; //選出素數
for (int j = 0; j < cnt && pr[j] * i < 1000; ++j) {
p[pr[j] * i] = false; //篩出非素數
if (i % pr[j] == 0) break; //重複篩選,跳出循環
}
}
}