挑战
2026-08-05 10:14:24
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
vector<long long>segmented_sieve(long long n){
vector<long long>primes;
if(n<2)return primes;
long long sqrt_n=sqrt(n)+1;
vector<bool>is_prime_small(sqrt_n,true);
for(long long i=2;i*i<sqrt_n;++i){
if(is_prime_small[i]){
for(long long j=i*i;j<sqrt_n;j+=i)is_prime_small[j]=false;
}}
for(long long i=2;i<sqrt_n;++i)if(is_prime_small[i])primes.push_back(i);
const long long SEGMENT_SIZE=1<<15;
vector<bool>block(SEGMENT_SIZE);
for(long long low=0;low<n;low+=SEGMENT_SIZE){
long long high=min(low+SEGMENT_SIZE,n);
fill(block.begin(),block.end(),true);
for(long long p:primes){
if(p*p>high)break;
long long start=((low+p-1)/p)*p;
if(start<p*p)start=p*p;
for(long long j=start;j<high;j+=p)block[j-low]=false;
}
for(long long i=max(low,2LL);i<high;++i)if(block[i-low])primes.push_back(i);
}
return primes;
}
int main(){
long long n;
cin>>n;
cout<<segmented_sieve(n);
return 0;
}
全部评论 5
难绷,作者自己写完的代码都不运行的
2026-08-05 来自 上海
0https://www.lxwow.top/可以注册个嘛,谢谢啦没有账户请联系我或者注册
2026-08-05 来自 浙江
0thunder
2026-08-05 来自 上海
0AI or 复制
2026-08-05 来自 上海
0hyw,不知道我在帖子里写了用AI的GXX吗
2026-08-05 来自 浙江
0还有,这一看就是分段筛,简直拉完了
2026-08-05 来自 浙江
0我不会关你啥事,而且谁家好人代码没有缩进的?(复制的时候可能没有)
2026-08-05 来自 上海
0
挑战已收到
2026-08-05 来自 浙江
0






























有帮助,赞一个