素数专题素数是一个经常的涉及到得内容,所以有必要整理出有关解决素数相关问题的算法学习资料:Eratosthenes筛法和欧拉筛法对比 一般筛法求素数+快速线性筛法求素数 数学技巧之素数筛选 1 /* 2 约数枚举,复杂度O (sqrt(n)) 3 By TiaoZhan 4 */...
分类:
其他好文 时间:
2015-08-17 13:49:01
阅读次数:
202
首先以求1000000以内的素数为例来探讨筛法
Eratosthenes筛法(埃拉托斯特尼筛法)时间复杂度:O(N*loglogN)
空间复杂度:O(N)代码:#include
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2015-08-08 00:06:15
阅读次数:
144
本题考查的知识点主要就是用线性筛法求欧拉函数φ,首先说一下什么是欧拉函数:对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。之所以要用线性筛法,是因为它能使我们O(n)的求出值。 先简要介绍一下线性筛法求欧拉函数φ:(摘自baidu) int m[maxn],phi[maxn],p[max...
分类:
其他好文 时间:
2015-08-03 18:16:37
阅读次数:
141
筛出足够多的素数然后存起来查找即可。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef long long ll; 8 const int N = 20000001; 9 const...
分类:
其他好文 时间:
2015-07-27 20:28:33
阅读次数:
150
一般的线性筛法genPrime和genPrime2是筛法求素数的两种实现,一个思路,表示方法不同而已。#include #include #includeusing namespace std; const int MAXV = 100; //素数表范围 bool flag[MAXV+1];...
分类:
其他好文 时间:
2015-06-09 23:31:04
阅读次数:
158
我们先来看一下最经典的埃拉特斯特尼筛法。时间复杂度为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
《2》 1 //线性筛法求解极性函数(欧拉函数) 2 memset(check, false, sizeof(check)); 3 fai[1] = 1; 4 int tot = 0; 5 for(int i=2; iN) break;15 check[i*peime[j]] = true;...
分类:
其他好文 时间:
2015-05-20 23:51:00
阅读次数:
272
欧拉函数 玛雅,我应该先看看JZP的论文的……贾志鹏《线性筛法与积性函数》例题一 这题的做法……仔细想下可以得到:$ans=2*\sum_{a=1}^n\sum_{b=1}^m gcd(a,b)-n*m$ 那么重点就在于算$\sum_{a=1}^n\sum_{b=1}^m gcd(a,b)$这...
分类:
其他好文 时间:
2015-04-03 18:54:56
阅读次数:
201
http://www.lydsy.com/JudgeOnline/problem.php?id=1101无限膜拜数论和分块orz首先莫比乌斯函数的一些性质可以看《初等数论》或《具体数学》或贾志鹏的《线性筛法和积性函数》我写一些笔记啥的吧。。首先莫比乌斯函数的定义及一些性质(免去证明):$$\mu (...
分类:
其他好文 时间:
2014-11-28 15:57:22
阅读次数:
351
题目:输出n!中素数因数的个数。
分析:数论。这里使用欧拉筛法计算素数,在计算过程中求解即可。
传统筛法是利用每个素数,筛掉自己的整数倍;
欧拉筛法是利用当前计算出的所有素数,乘以当前数字筛数;
所以每个前驱的素椅子个数一定比当前数的素因子个数少一个。
说明:又一次用了“线性筛法”。
#include
#incl...
分类:
其他好文 时间:
2014-11-17 14:04:17
阅读次数:
138