线性欧拉筛法

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

猜你喜欢

转载自blog.csdn.net/daoshen1314/article/details/84428538