埃氏筛法: 对于每一个小于n的非负整数p,删去2p,3p,4p......,当处理完所有数后,还没有删除的就是素数. 想法:用a记录素数表,a[i]=1表示不是素数,a[i]=0表示是素数. 注意:1不是素数,需要特判! ...
分类:
其他好文 时间:
2019-10-20 16:28:13
阅读次数:
88
素数筛法 如果我们想要知道小于等于 $n$ 有多少个素数呢? 一个自然的想法是我们对于小于等于 $n$ 的每个数进行一次判定。这种暴力的做法显然不能达到最优复杂度,考虑如何优化。 考虑这样一件事情:如果 是合数,那么 的倍数也一定是合数。利用这个结论,我们可以避免很多次不必要的检测。 如果我们从小到 ...
分类:
其他好文 时间:
2019-10-15 19:30:33
阅读次数:
136
A. 木板 标签: 素因数的根号筛法 题解: 由相似三角形可得: $ ans=8*\sum_{i=1}^{n-1}[i*i(mod)n==0] $ 根号筛出质因子即可 B. 打扫卫生 标签: Dp+链表 正解: 暴力可A的一道题,但是正解其实并不难想 最暴力的Dp式子:$ f[i]=min{f[j] ...
分类:
其他好文 时间:
2019-10-13 10:42:29
阅读次数:
86
前言 埃氏筛是一种筛2-n的素数方法,但是时间复杂度没有欧拉筛的强,只是O(n*loglogn)但是还是一种比较好理解的筛法 正文 一、素数的定义 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。(摘自百度百科) 二、算法详解 将2-n所有的数都标记为true,然后循环扫一遍, ...
分类:
其他好文 时间:
2019-10-06 13:21:29
阅读次数:
78
数论板子 数论分块 : 筛法: 线性筛: cpp include incldue const int MAXN=1000010; bool prime[MAXN]; int Prime[MAXN]; int num=0; void make_prime() { memset(prime,true,s ...
分类:
其他好文 时间:
2019-10-06 00:17:36
阅读次数:
95
http://www.codevs.cn/problem/3223/ L,R的范围太大了, 不可能直接筛素数 但考虑到R L的范围在能承受的范围内, 这时候就要用到 区间筛: 主体思想与其他筛法一致, 但一般题目中数据范围比较大(L include using namespace std; long ...
分类:
其他好文 时间:
2019-10-05 18:30:03
阅读次数:
72
是不是很经典,还记得什么是素数吗。不记得,没事,我不讲。连接在这自己转跳 (●ˇ?ˇ●)。我比较懒。看完之后让我们来思考一下如何求素数, 首先回顾一下素数的定义: 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 由这一条限制可得出一个结论: 存在一个数n,若n被[2,n-1] ...
分类:
其他好文 时间:
2019-10-04 14:48:38
阅读次数:
108
筛法 $\huge\color{red}{线性筛素数}$ 保证每次只被自己最小的质因数筛到。。 cpp void yych() { for(int i = 2; i 1)\\( 1)^q ,&(\forall k, k ...
分类:
其他好文 时间:
2019-09-30 09:45:59
阅读次数:
78
(好 快 ) 素数是什么就不用介绍了吧。。。先介绍判断素数的方法 判断素数 先看朴素算法: (真的好朴素。。) 用时O(n) (肯定不行啊,吃枣药丸的。。) 怎么优化呢? 不难发现,如果a是n的约数,那么n/a也是n的约数 所以就有以下代码: 这个用时O(n^0.5) 一般使用的话这样其实差不多了。 ...
分类:
其他好文 时间:
2019-09-25 15:45:30
阅读次数:
84