周中训练笔记+筛素数
来源:互联网 发布:sqlserver 行为日志 编辑:程序博客网 时间:2024/06/18 02:09
/*哇,博客用了这么久,花了老长时间整理了下博客,才发现原来他有自带的代码格式(倒数第四个按钮。。。)
因为之前为了比赛简单的看过些数论的题目,所以这次先看着数论,博客从最简单的开始。
各大oj好像都停了,没法水几个题了,数论印象最深的就是筛素数这一块,突然想起来没具体发过,简单的提过,PrimeGap里用到过,总结一次吧。
第一种筛法较慢一些,O(nlog(n)),具体就是没选出一个新素数,便将其倍数全部剔除,很简洁
因为之前为了比赛简单的看过些数论的题目,所以这次先看着数论,博客从最简单的开始。
各大oj好像都停了,没法水几个题了,数论印象最深的就是筛素数这一块,突然想起来没具体发过,简单的提过,PrimeGap里用到过,总结一次吧。
第一种筛法较慢一些,O(nlog(n)),具体就是没选出一个新素数,便将其倍数全部剔除,很简洁
第二种,O(n),利用了每一个合数至少有一个最小质因子代码标注,枚举,每次出现新素数之后,枚举不大于这个数的最小质因子的指数,将他们的乘积剔除,*/
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;#define N 100005int prime[N],vis[N];void Aila(int n){ int k=1; for(int i=2;i<n;i++) { if(!vis[i]) { prime[k++]=i; for(int j=2*i;j<n;j+=i) { vis[j]=1; } } }}void Oula(int n){ int k=1; for(int i=2;i<n;i++) { if(!vis[i]) prime[k++]=i; for(int j=1;j<k&&i*prime[j]<n;j++) { vis[i*prime[j]]=1; if(i%prime[j]==0)//具体在这里 break; } }}int main(){ Aila(1000); for(int i=1;i<30;i++) cout<<prime[i]<<" "; memset(vis,0,sizeof(vis)); cout<<endl; memset(prime,0,sizeof(prime)); Oula(1000); for(int i=1;i<30;i++) cout<<prime[i]<<" "; return 0;}
阅读全文
0 0
- 周中训练笔记+筛素数
- 周中训练笔记
- 周末训练笔记+UVA138+HDU2973【筛素数】【威尔逊定理】
- 周中训练笔记1
- 周中训练笔记2
- 周中训练笔记3
- 周中训练笔记5
- 周中训练笔记7
- 周中训练笔记8
- 周中训练笔记9
- 周中训练笔记10
- 周中训练笔记12
- 周中训练笔记13
- 周中训练笔记14
- 周中训练笔记15
- 周中训练笔记+Uva10791
- 周中训练笔记16
- 周中训练笔记17
- Linux基础——Vim编辑器的使用
- 杭电ACM题目类型整理
- Socket安全
- 第六章:通过mvc模型设计一个简单的留言系统
- spring cloud
- 周中训练笔记+筛素数
- 洛谷 P3084 [USACO13OPEN]照片Photo
- PullToRefresh的用法
- 算法练习(17):Wildcard Matching
- 打印字符三角形
- Java| 编码格式介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
- noteBook2.8-C#基础第八天
- 实验:生产中比较有用的------压缩功能的启用测试
- 《Generics in the Java Programming Language》译文