线性时间内筛素数+欧拉函数+莫比乌斯函数
2013-08-19 17:02
169 查看
从别人博客里摘录过来改写的:https://quartergeek.com/sieve-prime-in-linear-time/
typedef long long LL; #define mn 100000+5 LL ph[mn]; bool vis[mn]; int primes, prime[mn]; void Init() { ph[1] = 1; primes=0; for (LL i = 2; i < mn; ++i) { if (!vis[i]) { prime[primes++] = i; ph[i] = i-1; } for (LL j = 0; j < primes && i*prime[j] < mn; ++j) { vis[i*prime[j]] = true; if (i % prime[j]) ph[i*prime[j]] = ph[i]*(prime[j]-1); else { ph[i*prime[j]] = ph[i]*prime[j]; break; } } } }
#include <cstdio> #include <cstring> using namespace std; const int maxn = 60000+5; bool vis[maxn]; int prime[maxn],primes,mu[maxn]; void init_mu() { memset(vis,0,sizeof(vis)); mu[1]=1; primes=0; for(int i=2; i<maxn; i++) { if(!vis[i]){ prime[primes++]=i; mu[i]=-1; } for(int j=0; j<primes&&i*prime[j]<maxn; j++) { vis[i*prime[j]]=1; if(i%prime[j]) mu[i*prime[j]]=-mu[i]; else { mu[i*prime[j]]=0;break;} } } }
相关文章推荐
- 线性时间内筛素数+欧拉函数+莫比乌斯函数
- 线性时间内筛素数和欧拉函数
- 利用积性函数的优化(线性时间:筛素数、求1~n的欧拉函数、约数个数)
- 利用积性函数的优化(线性时间:筛素数、求1~n的欧拉函数、约数个数)
- 线性筛素数+欧拉函数+莫比乌斯函数
- 线性时间 筛素数,求前n个数的欧拉函数值,求前n个数的约数个数
- (转载)线性时间内筛素数和欧拉函数
- 线性时间 筛素数,求前n个数的欧拉函数值,求前n个数的约数个数
- [置顶] 线性筛选同时得到欧拉函数表和素数表
- 线性筛素数 线性筛欧拉函数
- poj 2478【线性筛素数+欧拉函数】
- poj 2689 线性时间筛选素数
- 【数论】线性筛素数,线性筛欧拉函数,求前N个数的约数个数
- 2186: [Sdoi2008]沙拉公主的困惑 线性筛素数+欧拉函数+乘法逆元
- hdu 2824 线性筛素数求欧拉函数+前缀和
- Poj 2478-Farey Sequence 欧拉函数,素数,线性筛
- 一个线性时间复杂度的质因数分解函数(查找全部的素数、得到全部的质因数分解个数)
- 线性筛选素数和线性筛选欧拉函数【bzoj2190]
- 线性筛与欧拉函数、莫比乌斯函数
- 【数论】线性筛素数,线性筛欧拉函数,求前N个数的约数个数