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

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

基本思想:素数的倍数一定不是素数

实现方法:用一个长度为N+1的数组保存信息(0表示素数,1表示非素数),先假设所有的数都是素数(初始化为0),

从第一个素数2开始,把2的倍数都标记为非素数(置为1),一直到大于N;然后进行下一趟,找到2后面的下一个素数3,

进行同样的处理,直到最后,数组中依然为0的数即为素数。

说明:整数1特殊处理即可。

 

#include 
#include
#include
int a[100000001];int main(){ int i, j, n; memset(a, 0, sizeof(a)); while (scanf("%d", &n) != EOF) { //n = 100000000; for (i = 2; i <= n; i++) { //如果是素数 if (a[i] == 0) { for (j = i + i; j <= n; j += i) { a[j] = 1; } } } printf("time: %.2lf", (double) clock() / CLOCKS_PER_SEC); /* printf("2 "); for (i = 3; i <= n; i++) { if (a[i] == 0) { printf("%d ", i); } } */ } return 0;}

 

 

 

 

优化

#include
#define Max 100000000int a[Max + 1]={
1,1};int main(){ int i,j; for(i=4;i<=Max;i+=2) { a[i]=1; } for(i=3;i*i<=Max;i++) { if(!a[i]) { for(j=3*i;j<=Max;j+=2*i) { a[j]=1; } } } return 0;}

 

转载于:https://www.cnblogs.com/virusdefender/p/3454525.html

你可能感兴趣的文章
select2 下拉搜索控件
查看>>
WebAPI常见的鉴权方法,及其适用范围
查看>>
08. 删除重复&海量数据
查看>>
重新想象 Windows 8 Store Apps (71) - 其它: C# 调用 C++
查看>>
发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
查看>>
记录一些好用的工具
查看>>
超链接样式设置(去下划线)(转)
查看>>
restcontroller和controller区别
查看>>
2016012003+陈琦+散列函数的应用及其安全性
查看>>
Android 状态栏通知Notification、NotificationManager详解
查看>>
Sublime Text 3中使用正则表达式删除空行
查看>>
UIApplicationDelegate协议
查看>>
再谈iOS 7的手势滑动返回功能
查看>>
Jmeter测试dubbo接口填坑
查看>>
python小练——找出指定目录下小于指定字节的文件,输出到文本文件
查看>>
渐渐磨砺--16年11月封闭总结
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>
最简单的三层实例【插入据
查看>>
设计模式学习笔记——Prototype原型模式
查看>>