合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数
时间复杂度O(n)
每个合数只会被他的最小的质因子筛去。
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxx=400005;
int prime[100005];
bool isPrime[maxx];
void init()
{
int cnt=0;
for(int i=2;i<maxx;i++)
{
if(!isPrime[i])prime[cnt++]=i;
for(int j=0;j<cnt&&(ll)i*prime[j]<maxx;j++)
{
isPrime[i*prime[j]]=true;
if(i%prime[j]==0)break;
}
}
}
int main()
{
init();
return 0;
}