POJ2478_Farey Sequence【快速求欧拉函数】
题目大意:
给你一个数n,对于0 < a < b <= n,求真分数a/b的个数
思路:因为a/b为真分数,所以a和b互质。
求真分数a/b的个数。其实就是求0 < i <= n中,小于i的正整数中,
有多少个与i互质的数。累加起来就是真分数a/b的个数。
其实就是欧拉函数
因为n的规模为10^6,可用快速求欧拉函数的方法求得(类似于筛法求素数)。
根据推论:设P是素数,
若p是x的约数,则E(x*p)=E(x)*p.
若p不是x的约数...
分类:
其他好文 时间:
2014-10-15 23:10:51
阅读次数:
178
题目大意:给定n和m,求Σ(1
i和j的限制不同,传统的线性筛法失效了,这里我们考虑容斥原理
令f[x]为GCD(i,j)=x的数对(i,j)的个数,这个不是很好求
我们令g[x]为存在公因数=x的数对(i,j)的个数(注意不是最大公因数!),显然有g[x]=(n/x)*(m/x)
但是这些数对中有一些的最大公因数为2d,3d,4d,我们要把他们减掉
于是最终f[x]=(n/x)*(m/...
分类:
其他好文 时间:
2014-10-09 15:46:48
阅读次数:
366
题目:Almost Prime Numbers是只有一个素数因子的数,统计一个区间中的Almost Prime Numbers。
分析:数论,分治。根据定义可知Almost Prime Numbers就是素数的幂(大于1次)。
首先,利用筛法计算出1000000内的素数(至少的素数的平方);
然后,计算所有的素数的小于1000000000000...
分类:
其他好文 时间:
2014-10-09 02:24:57
阅读次数:
162
数论好题!!!首先由题目给的公式,对于素数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
由于我要测试线性筛法的速度,用上了C/C++精确计时.此时传统的clock()方法不够用了,我们需要另一种测量的办法,即CPUTicks/CPUFreq.如何实现呢?#include LARGE_INTEGER freq,start,stop;QueryPerformanceFrequency(&f...
分类:
编程语言 时间:
2014-10-04 20:11:27
阅读次数:
196
写$\text{O}\left( n \log{\log{n}}\right)$的筛法很长时间了,我却从来没想过它的优化.偶然间看到线性筛法,心想大约是不错的优化,于是便爬去学习下.首先,$\text{O}\left( n \log{\log{n}}\right)$的筛法肯定要比$\text{O}\...
分类:
其他好文 时间:
2014-10-04 17:41:56
阅读次数:
331
http://poj.org/problem?id=2478http://acm.hdu.edu.cn/showproblem.php?pid=2824欧拉函数模板裸题,有两种方法求出所有的欧拉函数,一是筛法,而是白书上的筛法。首先看欧拉函数的性质:欧拉函数是求小于n且和n互质(包括1)的正整数的个...
分类:
其他好文 时间:
2014-10-03 20:11:05
阅读次数:
226
题目大意:给你一个区间【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