博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
筛法求素数
阅读量:4982 次
发布时间:2019-06-12

本文共 713 字,大约阅读时间需要 2 分钟。

  筛法求素数的原理是这样的,先找到第一个素数,然后将第一个素数的倍数都去掉,然后找到第二个素数,然后将第二个素数的倍数都去掉。

筛法求素数可以很容易求得小于n的所有素数。

如果要求第n个素数,那么就要用素数定理,求得第n个素数所在的范围,然后再用筛法。

 

#include 
#include
#include
const int N = 10000;bool vis[N];/*偶数都不是素数,所以偶数的倍数没必要去掉*/void getPrimeTable(int n){ int i,j; int t = sqrt(n); for(i=3; i<=t; i+=2)//从3开始,将素数的倍数去掉 { if(!vis[i])//!vis表示为素数 for(j=i*i;j<=n; j+=2*i)//将i的i倍开始标记为非素数,因为偶数不用标记,所以j+=2*i,即让j为奇数 vis[j] = true; }}int main(){ int n; scanf("%d",&n); getPrimeTable(n); printf("%d",2); for(int i=3; i<=n; i+=2) if(!vis[i]) printf(" %d",i);}

 

转载于:https://www.cnblogs.com/justPassBy/p/4363795.html

你可能感兴趣的文章
Protel文件转PADS文件
查看>>
C#中的变量声明
查看>>
iframe中跨域页面访问parent的方法
查看>>
curl实现多路并发请求(请求数量大时再次分割实现循环处理)
查看>>
调查问卷心得体会
查看>>
Linux文件3个时间点(access time,modify time,change time)
查看>>
深谈德国车和日本车的区别--觉得分析的还算冷静客观
查看>>
C#命名空间
查看>>
poj1655Multiplication Puzzle
查看>>
WinDebug 常用命令表【摘】
查看>>
LVS _keepalived 配置
查看>>
Django之ORM基础
查看>>
JS监听浏览器关闭事件
查看>>
[Log]ASP.NET之HttpModule 事件执行顺序
查看>>
明天回老家看我儿子了!
查看>>
hdu2089(数位dp模版)
查看>>
JS 获取浏览器和屏幕宽高信息
查看>>
TCP/UDP 协议,和 HTTP、FTP、SMTP,区别及应用场景
查看>>
我的大学生活
查看>>
php SPL四种常用的数据结构
查看>>