盗一波素数筛 const int mx = 1000000 + 1; ///在(1,mx)的范围内寻找素数 const int sqrt_mx = (int)sqrt((double)mx); bool vis[mx]; int prime[mx / 10]; ///在mx>65000时建议写成 i ...
分类:
其他好文 时间:
2016-05-25 18:49:28
阅读次数:
112
题意:输入一个数判断是不是素数,并规定2不是素数。 析:一看就很简单吧,用素数筛选法,注意的是结束条件是n<0,一开始被坑了。。。 不说了,直接上代码: ...
分类:
其他好文 时间:
2016-05-22 22:55:59
阅读次数:
272
1675 大质数 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 1675 大质数 2 1675 大质数 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 时间限制: 1 s 空间限制: 1000 KB ...
分类:
其他好文 时间:
2016-05-21 20:21:16
阅读次数:
228
问题链接:HDU1319
这是一个比较简单的问题。其关键是需要读懂题意,使用素数筛选法打表,然后进行输出即可。
需要注意的点如下:
1.题目中所说的素数并不是真正的素数,包括1;
2.需要读懂题意,对于输入的n和c,如果1到n之间有偶数个素数则打印2c个数,奇数个素数则打印2c-1个数;
3.打印的数是所有素数中位于中间位置的那些数。
事先还是要做一点功课的,计算一下1到1000之间有...
分类:
其他好文 时间:
2016-05-13 00:28:57
阅读次数:
190
1 const int N=1e6+11; 2 int p[N],pr[N],cnt; 3 void init() 4 { 5 for(int i=2;i<N;i++) 6 { 7 if(!p[i]) pr[++cnt]=i; 8 for(int j=1;j<=cnt&&i*pr[j]<N;j++) ...
分类:
其他好文 时间:
2016-04-16 12:33:23
阅读次数:
162
= =素数是一个很重要的块,所以筛法也是灰常重要的 首先 是传统筛法 第一版: ps:其实我个人感觉这个算法平常的一些题是够用的( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)(快学习! 第二版: 相比于第一版,先去除了2以后的偶数,因为这些偶数根本不可能是素数嘛(~ ̄▽ ̄)~,( ̄ε(# ̄)☆╰(废话 嗯,容 ...
分类:
其他好文 时间:
2016-04-16 12:22:57
阅读次数:
162
线型素数筛+质因素分解+组合数。 AC后发现这样做效率有点低。。766ms。 ...
分类:
其他好文 时间:
2016-04-10 11:31:43
阅读次数:
159
题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 给你a和b求a到b之间的素数个数。 先在小区间素数筛,大区间就用类似素数筛的想法,把a到b之间不是素数的标记出来。因为b-a最多1e5的大小,所以每组数据的时间复杂度最多就o(1e ...
分类:
其他好文 时间:
2016-04-01 21:49:30
阅读次数:
129
筛选法(埃拉托色尼(Eratosthenes)筛法)求素数,例如1~100 思想:逐个筛选,直到int(sqrt(100))个 1)因为1不是质数,将1筛去 2)2是质数,将2的倍数全都挖掉 3)3是质数,将3的倍数全都挖掉 4)4已经被挖去,不进行与4相关的操作 5)5是质数,将5的倍数全都挖掉 ...
分类:
其他好文 时间:
2016-03-28 23:26:56
阅读次数:
185
Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000). (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼。。 b - a ≤ 100000 是关键。 类似素数筛的方法: 1.初始化vis[]=0 ; 2.素数的倍数vi
分类:
其他好文 时间:
2016-03-20 19:15:56
阅读次数:
197