素数筛法模板 欧拉筛法
来源:互联网 发布:上海行知中学初中部 编辑:程序博客网 时间:2024/06/06 01:25
素数的分析详细(高效) 素数筛法:https://yq.aliyun.com/articles/175086
简单素数 http://www.cnblogs.com/luluping/archive/2010/03/03/1677552.html
简单的素数筛法:
int i,j,k;for(i=2;i<=n;i++) u[i]=true; //初始时所有数都在筛中for(i=2;i<=n;i++) //顺序搜索筛中的最小数if(u[i])for(j=2;j*i<=n;j++) u[j*i]=false; //将i的倍数从筛中筛去 for(i=2;i<=n;i++) if(u[i]) su[++num]=i; //将筛去的素数放入数组中
o(n*long log(n)) 算法中合数是作为素数的倍数筛去的,显然,如果每个合数仅被它最小的质因数筛去,则算法效率可以大幅度的提升,由此引出一种优化过的算法-----欧拉算法 !!!! 时间复杂度不到o(n) 哟!!!
欧拉算法:
int i,j,num=1; memset(u,true,sizeof(u)); for(i=2;i<=n;i++){ //遍历整个区间的每一个数 if(u[i]) su[sum++]=i; //将筛中的最小数送入素数表 for(j=1;j<num;j++) //搜索素数表中的每个数 { if(i*su[j]>n) break; //i与当前的素数之积超出范围 分析下一个素数 u[i*su[i]]=false; //将i与当前素数的乘积从筛子中筛去 if(i%su[j]==0) break; //当前素数为i的最小素因子,则分析下一个整数 } }
阅读全文
0 0
- 素数筛法模板 欧拉筛法
- 筛素数-欧拉筛法模板
- 模板:筛素数法
- 素数筛法模板
- 筛素数法--模板
- 线性素数筛法模板
- 我的素数筛法模板
- 数学基础-素数筛法模板
- 素数筛【模板】
- 线性筛素数模板
- 素数筛【模板】
- 素数筛模板
- 素数筛模板
- 区间素数筛模板
- 线性素数筛模板
- 【模板】筛素数
- 【模板】线性筛素数
- [模板]线性筛素数
- VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析
- Spring Boot学习案例开源项目
- nginx常用模块
- UVa 673 Parentheses Balance
- 穿插纸条 (第1-18关)交叉点计数
- 素数筛法模板 欧拉筛法
- 基于nginx架构的安全篇
- 【VB】浅识SQL注入
- BZOJ 5039([Jsoi2014]序列维护-线段树区间加,区间乘,区间求和)
- HBase最佳实践-读性能优化策略
- nginx性能优化
- “windows下安装TensorFlow” 手记
- linux源码分析工具
- javascript 变量、数据类型、语句、函数小总结 01