题目:计算一个给定数的欧拉函数(1~n-1中和n互质的数的个数)。
分析:数论,素数筛法,欧拉函数。
欧拉函数:φ(n)= n *(1 - 1/p1)*(1 - 1/p2)*(1 - 1/p3)*…*(1 - 1/pt);
这里利用筛法打表计算出50000内的素数,因为数据范围是1000000000内的,
所以,不...
分类:
其他好文 时间:
2014-10-21 12:25:42
阅读次数:
279
数论好题!!!首先由题目给的公式,对于素数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
题目大意:给你一个区间【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 #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
筛法求素数,寻找素数最经典快速的方法!!!
用筛法求素数的基本思想是:
把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29...
分类:
其他好文 时间:
2014-08-06 23:01:02
阅读次数:
212
题目:给你一个数,问有多少对素数的和小于这个数。
分析:数论。利用素数表枚举求解。
1.打表计算1000000内的素数(筛法);
2.对于每个输入的数字 v,枚举他的所有拆分情况;
设F(i)是不超过数字 i 的素数的个数,S(v)为 v 的拆分种数,则:
S(v)= sum(m...
分类:
其他好文 时间:
2014-07-27 23:37:49
阅读次数:
245
http://poj.org/problem?id=2478
求欧拉函数的模板。
初涉欧拉函数,先学一学它基本的性质。
1.欧拉函数是求小于n且和n互质(包括1)的正整数的个数。记为φ(n)。
2.欧拉定理:若a与n互质,那么有a^φ(n) ≡ 1(mod n),经常用于求幂的模。
3.若p是一个质数,那么φ(p) = p-1,注意φ(1) = 1。
4.欧拉函数是积性函数:
...
分类:
其他好文 时间:
2014-06-16 19:44:16
阅读次数:
204