Advertisement

素数筛法分为欧拉筛法

阅读量:

素数筛法 - 欧拉筛法

素数的筛选方法存在多种,本文重点探讨其中的欧拉筛法

1.暴力法获取素数
时间复杂度为 : O(n²)
若进行一定程度的优化 :将数据范围由 n 缩减至 √n
相应地,时间复杂度也由 O(n²) 降低至 O(√n)

2.广为人知的埃拉托斯特尼筛法
时间复杂度为 : O(n log log n)
而本次讨论的欧拉筛法则是在埃式筛法的基础上进一步改进

3.欧拉筛法
其时间复杂度为 : O(n)

复制代码
    #include<cstdio>
    
    using namespace std;
    
    int judge[10000];	//保存   这个数是否为素数   
    int prime[10000];    //用来保存已经找到的素数 
    int count;   //统计素数的个数
    int main()
    {
    
    	int n;
    	scanf("%d",&n);
    	for(int i = 2;i <= n;i++)
    	{
    		if(!judge[i])	//如果judge[i] 没有被标记为合数 
    		{
    			prime[count] = i;     //将 i 保存进数组

全部评论 (0)

还没有任何评论哟~