#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 3e7+2;
typedef long long ll;
int v[MAX_N],prime[MAX_N];
void primes(int n) {
memset(v,0,sizeof(v));
int m = 0;
for(int i=2;i<=n;i++){
if(v[i]==0){ // i 是质数
v[i] = i;
prime[++m] = i;
}
for(int j=1;j<=m;j++){
if(prime[j]>v[i]||prime[j]>n/i) break;
// prime[j]是是合数i*prime[j]的最小质因子
v[i*prime[j]] = prime[j];
}
}
// 打印1到n之间的素数
// for(int i=1;i<=m;i++){
// cout << prime[i] << endl;
// }
// 打印1到n每个数的最小质因子
// for(int i=0;i<=n;i++){
// cout << i << " " << v[i] << endl;
// }
}
线性筛
最新推荐文章于 2020-10-18 19:28:47 发布