1. 程式人生 > >線性尤拉篩法

線性尤拉篩法

合數指自然數中除了能被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;
 }