尤拉篩

9102700發表於2024-06-20

其實尤拉篩應該像其他簡單模板一樣記住的,那就只在 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;
}

相關文章