bitset在不开O2下貌似比bool数组慢
查看原帖
bitset在不开O2下貌似比bool数组慢
1074084
asd890123楼主2024/5/29 17:45

欧拉筛,亲测bitset不开O2会最后两个点TLE,bool则AC:

#include <cstdio>
#include <bitset>
#include <vector>

constexpr int maxn = 1e8 + 5;

int main(){
    
    int n,ans = 0;
    std::vector <int> prime;
    std::bitset <maxn> is_prime;
    
    scanf("%d",&n);
    is_prime[0] = is_prime[1] = 1;
    for (int i = 2;i <= n;i++){
        
        if (!is_prime[i]) prime.push_back(i),ans++;
        for (int j = 0;j < prime.size() && i * prime[j] <= n;j++){
            
            is_prime[i * prime[j]] = 1;
            if (i % prime[j] == 0) break;
            
        }
        
    }
    printf("%d\n",ans);
    
    return 0;
}
2024/5/29 17:45
加载中...