其實尤拉篩應該像其他簡單模板一樣記住的,那就只在 CF 和 Atc 直接用吧
int prime[10000007], vis[10000007];
int euler_seive(int n){
int cnt = 0;
memset(vis, 0, sizeof(vis));
memset(prime, 0, sizeof(prime));
for(int i = 2; i <= n; i++){
if(!vis[i]) {vis[i] = i; prime[cnt++] = i;}
for(int j = 0; j < cnt; j++){
if(i * prime[j] > n) break;
vis[i * prime[j]] = prime[j];
if(i % prime[j] == 0) break;
}
}
return cnt;
}