素数专题素数是一个经常的涉及到得内容,所以有必要整理出有关解决素数相关问题的算法学习资料:Eratosthenes筛法和欧拉筛法对比 一般筛法求素数+快速线性筛法求素数 数学技巧之素数筛选 1 /* 2 约数枚举,复杂度O (sqrt(n)) 3 By TiaoZhan 4 */...
分类:
其他好文 时间:
2015-08-17 13:49:01
阅读次数:
202
题目:输出n!中素数因数的个数。分析:数论。这里使用欧拉筛法计算素数,在计算过程中求解就可以。 传统筛法是利用每一个素数,筛掉自己的整数倍; 欧拉筛法是利用当前计算出的全部素数,乘以当前数字筛数; 所以每一个前驱的素椅子个数一定比当前数的素因子个数少一个。说明:重新用了...
分类:
其他好文 时间:
2015-06-02 12:39:51
阅读次数:
114
我们先来看一下最经典的埃拉特斯特尼筛法。时间复杂度为O(n loglog n)
int ans[MAXN];
void Prime(int n)
{
int cnt=0;
memset(prime,1,sizeof(prime));
prime[0]=prime[1]=0;
for(int i=2;i<n;i++)
{
if(vis[i])
{
ans[cnt++]=...
分类:
其他好文 时间:
2015-05-30 09:24:54
阅读次数:
277
SGU113 Nearly Prime Numbers
题目大意:
求一个数N是否能由两个质数p1*p2得到(p1可以=p2)
输入:
数据组数Q(1
Q个数,为题目要求的数字N(1
输出:
对于每个数字,如果找得到,则输出"Yes",否则输出"No",用回车隔开。
样例输入:
1
6
样例输出:
Yes
看似比较水的一道题目(实际也比较水)。
首先我们不妨设p...
分类:
其他好文 时间:
2014-11-26 11:33:41
阅读次数:
175
题目:输出n!中素数因数的个数。
分析:数论。这里使用欧拉筛法计算素数,在计算过程中求解即可。
传统筛法是利用每个素数,筛掉自己的整数倍;
欧拉筛法是利用当前计算出的所有素数,乘以当前数字筛数;
所以每个前驱的素椅子个数一定比当前数的素因子个数少一个。
说明:又一次用了“线性筛法”。
#include
#incl...
分类:
其他好文 时间:
2014-11-17 14:04:17
阅读次数:
138
2818: Gcd
题目:
给定整数N,求1
数对(x,y)有多少对. 1
算法:
求解 g = Gcd(x,y)为素数,转换问题成x/g,y/g互质。所以,只要求出[1,N/pi]内互质的对数(pi为1....N之间的素数)。枚举pi就可以了。而这里就可以用到线性的欧拉求解,普通欧拉为O(nlognlogn)。
/*
线性素数加欧拉筛法O(N)
题目:...
分类:
其他好文 时间:
2014-10-31 20:45:54
阅读次数:
184
写$\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
题目:一个数的素因子的和如果也是素数就叫做DePrimes,统计给定区间内的DePrimes。
分析:数论。本题使用用一种素数的筛法,欧拉筛法,也加线性筛法。
这种方法,每次删选分两种情况:1.素因子不重复、2.素因子重复;
利用这个性质,统计DePrimes,如果素因子不同就加和,否则就去相应的...
分类:
其他好文 时间:
2014-07-30 12:20:03
阅读次数:
398
1.欧拉筛法在线性时间内求素数以及欧拉函数代码: 1 procedure get; 2 var i,j,k:longint; 3 begin 4 tot:=0; 5 fillchar(check,sizeof(check),false); 6 for i:=2 to n do 7 be...
分类:
其他好文 时间:
2014-06-25 22:11:51
阅读次数:
574