素数,不同的质数,各种各样的问题总是遇到的素数。以下我们来说一下求素数的一种比較有效的算法。就是筛法。由于这个要求得1-n区间的素数仅仅须要O(nloglogn)的时间复杂度。以下来说一下它的思路。思路:如今又1-n的数字。素数嘛就是除了1和本身之外没有其它的约数。所以有约数的都不是素数。我们从2開...
分类:
其他好文 时间:
2015-07-20 19:07:12
阅读次数:
107
线性筛更快。1.埃氏筛法1 int m=sqrt(n+0.5);2 memset(vis,0,sizeof(vis));3 for(int i=2;i 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 in...
分类:
其他好文 时间:
2015-07-19 19:56:34
阅读次数:
107
题目请点我
题解:
这道题看起来是一道很简单的题目,但是数据量很大。如果暴力判断会超时,预处理筛法标记素数则会超内存。最后看了网上的解法才知道要逆推,生成回文数,这还是要第一次遇到。并且很重要的一点是偶数位的回文数都能被11整除,所以只需要生成奇数位的,偶数位回文素数符合情况的值可能有11一个。挺考验思维的,重要的是do mathmatics first.
代码实现:/*
ID: eashio...
分类:
其他好文 时间:
2015-07-19 16:33:40
阅读次数:
148
Description:
Count the number of prime numbers less than a non-negative number, n.
基本思路:筛法
1, 2 为素数, 筛掉以2为因子的数。 即 2 * 2, 2*3, 2*4,2*5
2, 寻找到下一个未被筛除的数,如3. 再筛掉以3为因子的数。
3, 重复步骤2.
时间复杂度为O(n)
...
分类:
其他好文 时间:
2015-07-12 15:42:46
阅读次数:
90
奇怪筛法
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu
Submit Status
Description
Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. T...
分类:
其他好文 时间:
2015-07-12 09:49:46
阅读次数:
127
今天刷题刷了这么一道题,
The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below two million.
大概意思是10以内的质数加法和为 2 + 3 + 5 + 7 = 17,接着求2000000以内质数加法的和。
分析:要求2000000内质数的和,首先得把...
分类:
其他好文 时间:
2015-07-11 09:18:17
阅读次数:
137
题意:给定两个数l,r求这之间最近和最远的两个素数。数据范围是整数的上限。r-l
分析:总思路是把l和r间的素数全部找出来,然后遍历一遍求最小距离和最大距离。用一个函数预处理数据范围内的所有素数是不现实的,一来数组不可r能开那么大二来会超时。想想素数筛的思想:用sqrt(n)以内的素数筛掉n以内的所有合数,剩下n以内的素数。这里既然预处理不可能,我们一样可以用sqrt(n)以内的素数来筛,只是这...
分类:
其他好文 时间:
2015-07-05 12:32:01
阅读次数:
151
在期末被各科的大作业碾压快要窒息之际,百忙之中抽空上牛客网逛了逛,无意中发现一道好题,NowCoder猜想,题意很明显,就是个简单的素数筛法,但竟然超内存了,我晕(+﹏+)~ 明明有 3 万多 k 的空间限制……于是我不打表,试了试最暴力的做法,赤裸裸的做法果然超时了,无奈,只好对素数筛法进行位.....
分类:
其他好文 时间:
2015-07-04 18:17:57
阅读次数:
839
用筛法求素数。
简单介绍一下厄拉多塞筛法。厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的各数写在纸上:
在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数 是5,将它画圈,并划去5的其他倍数……依次类推,一直到所有小于或等于N的各数都画了圈或划去为止。这时,表中画了圈的以及未划去的那些数正好就是小于 N的素数。
这很像一面筛子,把满足条件的数留下来,把不满足条件的数筛掉。由于这种...
分类:
其他好文 时间:
2015-07-03 09:21:34
阅读次数:
378
#include #include int tab[1000001];//以后都用宏定义 MAXint main()//如要将包括1000000在内的打表,数组就开大一个{ int a,d,n,i,j; tab[0]=0;tab[1]=0; for(i=2;i<1000001;i+...
分类:
其他好文 时间:
2015-06-19 14:58:11
阅读次数:
114