思想:标记出所有非质数,输出所有未被标记的数。 对于n以内的筛选来说,如果n是合数,则有 1 ≤ c ≤ √n ,即 1 ≤ c2 ≤ n , c是n的最小正因数。只要找到了c就可以确定n是合数并将n标记。 1 int n = 15; 2 int mark[16] = { 3 1, 1, 0, 0, ...
分类:
其他好文 时间:
2017-08-25 17:00:10
阅读次数:
140
题目链接:http://www.spoj.com/problems/NDIV/ 题目大意:求a~b(包括a,b)区间内有多少个数的因子恰好有K个。1 <= a, b <=10^9 0 <= b - a <= 10^4 1 <= n <= 100 解题思路:筛法的一个非常巧妙的运用。当我们考虑数x的因 ...
分类:
其他好文 时间:
2017-08-24 21:33:11
阅读次数:
177
https://vjudge.net/problem/UVA-11105 筛法 ...
分类:
其他好文 时间:
2017-08-22 23:20:31
阅读次数:
179
写这个博客目的就是为了记录下学过的模板方便我这焫鷄复习吧//dalao们绕道 近期学的: (1)来自机房学长jjh大神教的求1~n的所有最小素因数和加上本焫鷄的批注 #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
分类:
其他好文 时间:
2017-08-22 20:57:16
阅读次数:
214
题意:给出a和p,判断p是否为合数,且满足a^p是否与a模p同余,即a^p%p与a是否相等 算法:筛法打1万的素数表预判p。再将幂指数的二进制形式表示,从右到左移位,每次底数自乘。 #include #include typedef long long LL; int p[10010]; bool ... ...
分类:
其他好文 时间:
2017-08-22 15:57:29
阅读次数:
131
题意:给出n,求不大于n的素数有多少个。 算法:先用线性时间复杂度的筛法打素数表,对于每个输入统计不超过的素数个数。 #include int p[100010]; bool np[1000010]; int cntp; void SievePrime(int n) { for (int i = 0... ...
分类:
其他好文 时间:
2017-08-21 18:52:24
阅读次数:
115
关于线性筛法 线性是指O(n)内筛掉所有合数,还有一种方法叫埃氏筛法,我先证明埃氏筛法效率低,也就是会有重复。 证明如下: 埃氏筛法的原理是找到一个素数后,它的1~n倍就会被筛掉,任何一个合数都可以被拆成一个质数*合数的形式,我们对每一个质数对应的可能的(合)数都枚举了,这就保证了所有可能的合数都被 ...
分类:
其他好文 时间:
2017-08-20 22:43:25
阅读次数:
419
质数(素数):指大于1的所有自然数中,除了1和自身,不能被其它自然数整除的数 合数:比1大,但不是素数的数称为合数,合数除了被1和自身整除,还能被其它数整除 质因数(素因数或质因子):能整除给定正整数的质数,除1以外,两个没有其它共同质因子的正整数称为互质 1和0既非素数又非合数 素数筛法原理:素数 ...
分类:
其他好文 时间:
2017-08-19 11:12:25
阅读次数:
162
公约数 GCD EX_GCD 素数 素数的三种筛法 朴素算法 //O( n*sqrt(n) ) Eratosthenes筛法 //O( n*log n ) 欧拉算法 //O(n) 幂运算 快速幂 //O(log n) ...
分类:
编程语言 时间:
2017-08-18 20:40:20
阅读次数:
231
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。 Input输入一个数N(N <= 10^6)Output输出>=N的最小的质数中的质数。 ...
分类:
其他好文 时间:
2017-08-18 09:37:49
阅读次数:
99