线性筛 模板
const int maxn = 1e6 + 6;
ll p[maxn];
bool book[maxn];
int cnt = 0;
void prime(int nn) {
cnt = 0;
for (int i = 2; i <= nn; i++) {
if (!book[i]) {
p[cnt++] = i;
}
for (int j = 0; j < cnt && i * p[j] <= nn; j++) {
book[i * p[j]] = true;
if (i % p[j] == 0) break;
}
}
}