素数表的获取(常规方法与埃氏筛法)
来源:互联网 发布:北仑博菱电器工资算法 编辑:程序博客网 时间:2024/06/09 20:15
//求解100以内的所有素数,复杂度对n不超过10^5的大小是没有问题的#include <cstdio>#include <cmath>int prime[101],num=0;int is_prime(int n){ int m=round(sqrt(n)); if(n<=1) return 0; for(int i=2;i<=m;i++) if(n%i==0) return 0; return 1;}void find_prime(){ for(int i=1;i<=100;i++) if(is_prime(i)) prime[num++]=i;}int main(){ find_prime(); for(int i=0;i<num;i++) printf("%d ",prime[i]); printf("\n"); return 0;}
//埃氏筛法求100以内的所有素数#include <cstdio>const int maxn=101;int prime[maxn],num=0;int vis[maxn]={0};void find_prime(){ for(int i=2;i<maxn;i++){ if(!vis[i]){ prime[num++]=i; for(int j=i*2;j<maxn;j+=i) vis[j]=1; } }}int main(){ find_prime(); for(int i=0;i<num;i++) printf("%d ",prime[i]); printf("\n"); return 0;}
//改进后的埃氏筛法#include <cstdio>#include <cmath>const int maxn=101;int prime[maxn],num=0;bool vis[maxn]={0};void find_prime(){ int m=round(sqrt(maxn-1)); for(int i=2;i<=m;i++){ if(!vis[i]){ for(int j=i*i;j<maxn;j+=i) vis[j]=1; } }}int main(){ find_prime(); for(int i=2;i<maxn;i++){ if(!vis[i]) prime[num++]=i; } for(int i=0;i<num;i++) printf("%d ",prime[i]); printf("\n"); return 0;}
阅读全文
0 0
- 素数表的获取(常规方法与埃氏筛法)
- 素数的判定(常规)
- 几种求素数与验证素数的方法
- 数素数--素数表的获取
- 求素数及素数表的获取
- String的常规方法
- 素数判定(筛选 突破常规)
- [Java]常规方法和筛法求解素数效率对比
- String 的常规处理方法
- 素数与求解方法
- 【算法-简单数学问题】- 素数表的获取(简单方法和埃式筛法)
- 网络监听技术与常规测试方法
- 数学问题——求素数(常规做法)
- 当月与跨月的退货的Credit Memo常规处理方法
- 重新映射常规内存的方法
- 破解电脑中密码的常规方法
- 非常规的方法安装docker-compose
- 素数打表的快速方法
- 微信小程序开发之IOS/Android兼容坑
- JavaEE的三层架构
- 假设检验
- 代码审查工具SonarQube
- c语言求解一元二次方程
- 素数表的获取(常规方法与埃氏筛法)
- Java对XML文档进行解析(SAX、StAX解析)
- shell 脚本 判断用户是管理员还是系统用户还是普通用户脚本
- php 实现读取目录下所有文件
- 做数模的那些天——2017.9.19
- hdu 1226 超级密码
- Atitit 建立新组织集团模型的框架基本制度与一些原则
- 剑指offer-剑指offer——栈的压入弹出顺序 (两种不错的的解法)
- (三)OpenFlow协议