思路:

for(int i = 2; i < n; i++) {
    if(f[i] == -1) {
        f[i] = 1;
        prime.push_back(i);
    }

    for(int p:prime) {
        if(p * i > n) break;
        f[p * i] = f[i] ^ 1;
        if(i % p == 0) break;
    }
}