关于素数的算法是信息学竞赛和程序设计竞赛中常考的数论知识,在这里我跟大家讲一下寻找一定范围内素数的几个算法。看了以后相信对大家一定有帮助。正如大家都知道的那样,一个数 n 如果是合数,那么它的所有的因子不超过sqrt(n)--n的开方,那么我们可以用这个性质用最直观的方法来求出小于等于n的所有的素数...
分类:
其他好文 时间:
2014-10-10 21:11:54
阅读次数:
300
数论好题!!!首先由题目给的公式,对于素数x > 2,phi(x)会变出好多2...而phi(2) = 1YY一下就可以发现,就是求出每一个质数经过分解会变出多少个2来,2的个数就是ans。于是我们令f[i]表示i分解出了几个2:这一过程类似素数筛法i为质数,f[i] = f[i - 1];否则,f...
分类:
其他好文 时间:
2014-10-07 01:20:42
阅读次数:
509
题目:计算一个给定数的欧拉函数(1~n-1中和n互质的数的个数)。
分析:数论,素数筛法,欧拉函数。
欧拉函数:φ(n)= n *(1 - 1/p1)*(1 - 1/p2)*(1 - 1/p3)*…*(1 - 1/pt);
这里利用筛法打表计算出50000内的素数,因为数据范围是1000000000内的,
所以,不...
分类:
其他好文 时间:
2014-10-05 15:04:08
阅读次数:
215
题意:将一个数拆成两个合数的和, 输出这两个数!(这道题做的真是TMD水啊)开始的时候不知道composite numbers是啥意思,看了3遍才看懂....看懂之后又想用素数筛选法来做,后来决定单个判断一个数是否为素数的方法来写,结果写错了两次,快疯掉了简直.... 1 #include 2 #i...
分类:
其他好文 时间:
2014-09-29 15:30:11
阅读次数:
228
题目大意:给你一个区间【L,U】,求出从L到U之间素数序列中,连续两个素数差值最大
的最小的两对素数对,但其中(1<=L< U<=2,147,483,647),但区间【L,U】距离不超
过1000000
思路:因为L,U的值太大了,普通素性判断和素数筛法都不可行,所以可以考虑先筛选
一次,筛出50000以内的素数,然后用50000以内的素数再次筛选出区间【L,U】的素
数。第一次素数筛法比较简单,主要是第二次筛法,分别判断【L,U】中每个数是50000
以内的素数的多少倍,若为1倍,则从2倍开始筛选。若不为...
分类:
其他好文 时间:
2014-09-25 01:17:57
阅读次数:
394
这个题基本上就两个知识点, 一个素数筛选法求素数,另一个是求最大公因子, 不过确定最大素数在素数表中的位置时,要用到二分的思想,不然会超时,下面是具体代码的实现; 1 #include 2 #include 3 #define SIZE 1000020 4 int prime[SIZE];//来.....
分类:
其他好文 时间:
2014-09-24 21:36:57
阅读次数:
192
简单的暴力筛法就可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 11 const int N = 1...
分类:
其他好文 时间:
2014-09-20 15:18:57
阅读次数:
182
素数筛选法原理就是当i是素数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。算法实现 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int ...
分类:
其他好文 时间:
2014-09-15 01:01:27
阅读次数:
337
题目大意,给定l和u,求区间[l,u]内的素数中,相邻两个差最大和最小的素数其中 u的范围达到了2e9本质上需要找出n以内的所有素数,使用筛法。先保存50000(大于sqrt(2e9))内的所有素数,然后再去筛出区间[l,u]内的素数(题上给定l-u#include#include using na...
分类:
其他好文 时间:
2014-09-09 21:19:10
阅读次数:
255
这几个问题都可以用一个辅助数组来帮助求解,也有的称为是伴随数组。
1、素数
筛选法求素数:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
void prime(int n)
{
vector isPrime(n+1,true);
int i;
for (i = 2;i*i <=...
分类:
其他好文 时间:
2014-09-09 13:06:48
阅读次数:
328