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

数论——素数

时间:2019-05-01 13:36:50      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:ima   close   nbsp   play   ret   http   lan   方法   col   

转自:http://www.cnblogs.com/linyujun/p/5198832.html

整合:https://blog.csdn.net/x_i_y_u_e/article/details/46365549

素数

定义

除了1和它本身以外不再有其他的因数的数。也叫质数。

素数判定

根据素数的定义判定(复杂度$O(\sqrt{n})$)

代码如下

技术图片
1 //素数
2 inline bool isPrime(const LL x) {
3     if (x <= 1)return false;
4     for (LL i = 2; i * i <= x; i++)if (x % i == 0)return false;
5     return true;
6 }
View Code

埃拉托斯特尼筛法

原理:如果找到一个质数,那么这个质数的倍数都不是质数。

这个方法能在 $O(n \ln \ln n)$ 的时间复杂度内筛选出 1~n 中的所有素数。示例图如下:

技术图片

 代码如下

技术图片
 1 bool primes[maxN];
 2 inline void Eratosthenes(){
 3     For(i, 2, maxN) primes[i] = true;//先全部初始化为质数 
 4     For(i, 2, maxN) {
 5         if(primes[i]){//如果i是质数 
 6             for(int j = 2 * i; j < maxN; j += i){//从i的两倍开始的所有倍数 
 7                 primes[j] = false; 
 8             }
 9         }
10     }
11 }
View Code

 

 

数论——素数

标签:ima   close   nbsp   play   ret   http   lan   方法   col   

原文地址:https://www.cnblogs.com/zaq19970105/p/10799564.html

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