码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉筛

时间:2015-09-23 23:31:44      阅读:712      评论:0      收藏:0      [点我收藏+]

标签:

 1 不会重复筛除,是线性O(n)的复杂度。
 2 
 3 const int MAXN=3000001;
 4 int prime[MAXN];//保存素数 
 5 bool vis[MAXN];//初始化 
 6 void Prime(int n)
 7 {
 8     int cnt=0;
 9     memset(vis,0,sizeof(vis));
10     for(int i=2;i<n;i++)
11     {
12         if(!vis[i])
13         prime[cnt++]=i;
14         for(int j=0;j<cnt&&i*prime[j]<n;j++)
15         {
16             vis[i*prime[j]]=1;
17             if(i%prime[j]==0)//关键 
18             break;
19         }
20     }
21     return cnt;//返回小于n的素数的个数 
22 }

 

欧拉筛

标签:

原文地址:http://www.cnblogs.com/by-1075324834/p/4833854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!