这里主要说一下 素数筛法,该方法可以快速的选取出1~N数字中的所有素数。时间复杂度 远小于O(N*sqrt(N))
方法为:从2开始,往后所有素数的倍数都不是素数。最后剩下的数都是素数。
再说说欧拉公式,用来解决所有小于n中的数字有多少个与n互质,用Ψ(n)表示。
Ψ(n)=n*(1-1/q1)*(1-1/q2)*……*(1-1/qk),n为和数,其中qi为n的质因数。
Ψ(n)=n-1,n为质数

下面有网上的几种表示,

<span style="color:#ff6666;">// 1:这是最原始的筛法,还有待优化
</span>#define Max 1000000
bool prime[Max];
void IsPrime(){prime[0]=prime[1]=0;prime[2]=1;for(int i=3;i<max;i++)prime[i]=i%2==0?0:1;int t=(int)sqrt(Max*1.0);for(int i=3;i<=t;i++)if(prime[i])for(int j=i;j<Max;j+=i)prime[j]=0;
}
<span style="color:#ff6666;">//2:优化后的筛法,手动地模拟原始筛法就可以发现,某个数字可能被不止一次地删去
//   优化后的筛法就可以避免这种不必要的删去操作
</span>#define Max 1000000
bool prime[Max];
void IsPrime(){prime[0]=prime[1]=0;prime[2]=1;for(int i=3;i<max;i++)prime[i]=i%2==0?0:1;int t=(int)sqrt(Max*1.0);<span style="color:#ff9900;"><span style="color:#330033;">for(int i=3;i<=t;i++)if(prime[i])for(int j=i*i;j<Max;j+=2*i)//优化 prime[j]=0;
}</span></span>
<span style="color:#ff9900;">//这就是素数的二次筛法
//与前两种筛法不同,此种筛法中prime[i]=2*i+3(即:我们只存储奇数,偶数肯定不是素数的)
</span>#define Max 1000000
bool prime[Max>>1];
void IsPrime(){memset(prime,true,sizeof(prime));int n=Max>>1,m=(int)(sqrt(Max*1.0)/2.0);for(int i=0;i<=m;i++)        if(prime[i])for(int j=2*i*i+6*i+3;j<=n;j+=2*i+3)isprime[j]=false;
}
上面两种方法的运行速率都比较快,以前用的素数比较法,虽然看起来简单,但是效率低;这种方法还是要靠自己理解。

素数判定(素数筛法)(欧拉)相关推荐

  1. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法

    Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...

  2. 快速求素数表——埃氏筛法与欧拉筛法

    快速求素数表--埃氏筛法与欧拉筛法 快速求素数表埃氏筛法与欧拉筛法 埃氏筛法 埃氏筛法原理 埃氏筛法时间复杂度 埃氏筛法代码求出1000000以内的素数并且输出n个素数 欧拉筛法 欧拉筛法原理 欧拉筛 ...

  3. BZOJ 2818: Gcd区间内最大公约数 为素数的对数(欧拉函数的应用)

    传送门 2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 3649 Solved: 1605 [Submit][Status][Dis ...

  4. 素数的有关性质(二)欧拉函数的一些定理证明与计算

    文章目录 写在前面 内容回顾 模mmm剩余类环 定理 模ppp剩余类域 定义 欧拉函数的定义 欧拉函数的性质 命题1:欧拉函数等于与mmm互素整数个数 命题2:取值为素数ppp的欧拉函数等于p−1p- ...

  5. 欧拉筛法(线性筛)的学习理解

    前言 在刚接触编程语言时,对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n^2),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期.在数论的学习中,我学到了埃氏筛法,O(n ...

  6. 筛质数—(朴素筛法、埃氏筛法、欧拉筛法(线性筛法))

    筛质数时首先要了解质数的定理:1~n中有  个质数 下面再来看具体算法: 1.朴素筛法: 直接把2~n-1中质数和合数的倍数都筛一遍,其代码如下所示: int primes[N],cnt=0; boo ...

  7. hdu2824(2009多校第一场) 线性筛法求欧拉函数

    欧拉函数指小于n且与其互质的数个数: phin=n*(1-1/p1)*(1-1/p2)*...(1-1/pn) 由此便可以利用类似筛素数筛出所有欧拉函数,具体看代码: 1 #include<st ...

  8. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

  9. 欧拉函数|(扩展)欧拉定理|欧拉反演

    也许更好的阅读体验 文章目录 欧拉函数 欧拉函数常用性质 欧拉定理 扩展欧拉定理 线性筛法 欧拉反演 欧拉函数 定义 欧拉函数是 小于等于 x的数中与x 互质 的数的 数目 符号 φ ( x ) \v ...

  10. 欧拉函数和莫比乌斯反演(Mobius)

    这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...

最新文章

  1. 【OpenCV 】Sobel 导数/Laplace 算子/Canny 边缘检测
  2. 计算机组成原理相关事例,计算机组成原理(示例代码)
  3. GoldenGate字段和数据筛选
  4. thinkPHP 模板的使用技巧(十三)
  5. android好用的第三方库2018使用总结
  6. python打砖块游戏算法设计分析_python实现打砖块游戏
  7. Cordic算法——圆周系统之向量模式
  8. 微软2011 Build大会:Windows 8盛大出场(转)
  9. mysql主从异步复制_centos7mysql主从复制(默认异步)
  10. Web实时通信,SignalR真香,不用愁了
  11. Centos安装JDK(java环境)
  12. 值栈ValueStack的原理与生命周期
  13. 对ichartjs基于基于HTML5的开源图形组件画图的心得
  14. git报错以及解决方法
  15. sql修改服务器标记,KB974006-SQL Server 查询优化程序修复程序模型4199服务模型
  16. zbox mysql_系统重启后,使用./zbox start 启动时,mysql数据库启动不起来,日志文件里无任何记录...
  17. java学习笔记(10) 第10 章(上) - 面向对象编程(高级部分)
  18. 自定义View之MultiStateView根据不同状态显示不同布局的View(雷惊风)
  19. ORA-12805: parallel query server died unexpectedly ORA-04030 (sort subheap,sort key) 原因排查与解决方法
  20. Android recyclerview上拉加载更多

热门文章

  1. 11、《每周一点canvas动画》——缓动动画
  2. html游戏怎么运行,怎么让代码运行
  3. Nginx给指定目录加密,静态文件(设计图)原型部署
  4. JAVA 项目经理的职责概述
  5. 免费OA系统让企业管理变得更加简单
  6. 多媒体信息发布终端盒的应用和功能
  7. 世茂以弘扬独特的工匠精神 辉映现代人居潮向
  8. PHP搭建织梦网站,dedeCMS+PHPStudy帮助新手实现在本地搭建织梦网站
  9. 【r-GAN】论文翻译 - Learning Representations and Generative Models for 3D Point Clouds
  10. 使用百度地图api搜索两点位置、连线、计算距离、ip定位