内存爆了怎么优化
  • 板块P3912 素数个数
  • 楼主_Mar
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/4/9 16:10
  • 上次更新2024/4/9 19:33:10
查看原帖
内存爆了怎么优化
1116303
_Mar楼主2024/4/9 16:10
#include<bits/stdc++.h>
using namespace std;
const int N=1e8;

int prime[N+1];//存储素数
bool visit[N+1];//判断是否被筛掉
int n;

void euler_sieve(){
    int cnt=0;
    memset(visit,0,sizeof(visit));
    memset(prime,0,sizeof(prime));

    for(int i=2;i<=n;i++){
        if(!visit[i]) prime[cnt++]=i;//第一个素数是prime[0]=2;

        for(int j=0;j<cnt;j++){
            if(i*prime[j]>n) break;
            visit[i*prime[j]]=1;    //用最小质因子去筛
            if(i%prime[j]==0)break; //不是最小质因子则break
        }
    }

    cout<<cnt;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);

    cin>>n;

    euler_sieve();
    return 0;
}
2024/4/9 16:10
加载中...