社区讨论
一种几乎没有实用价值的筛素数算法
灌水区参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lx5pmrip
- 此快照首次捕获于
- 2024/06/08 14:04 2 年前
- 此快照最后确认于
- 2024/06/08 17:35 2 年前
时间复杂度约为
CPP#include <bits/stdc++.h>
using namespace std;
vector<int> prime;
map<int,int> cnt;
bool flag = 1;
const int N=1e9;
int main(){
auto start = clock();
prime.push_back(2);
cnt[2]=0;
for(int i=3;i<=N;i++){
flag = 1;
for(int j:prime){
cnt[j] = (cnt[j] + 1) % j;
flag = flag & (cnt[j]!=0);
//printf("%d:cnt[%d]=%d\n",i,j,cnt[j]);
}
if(flag){
prime.push_back(i);
cnt[i] = 0;
if(prime.size()%500==0) printf("find prime:%d cnt:%d sqrt:%d ln:%d use:%d\n", i,prime.size(),(int)sqrt(i),i/(int)log(i),double(clock()-start)/CLOCK_PRE);
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...