伪模板链接:https://www.luogu.org/problemnew/show/P1390

线筛欧拉函数

欧拉函数定义

在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1φ(1)=1\varphi(1)=1)

写成式子如下:

φ(x)=∑i=1x[gcd(i,n)=1]φ(x)=∑i=1x[gcd(i,n)=1]

\varphi(x)=\sum_{i=1}^x[gcd(i,n)=1]

欧拉函数性质

计算欧拉函数的值时,有公式如下:

φ(x)=x∏p|x(1−1p)φ(x)=x∏p|x(1−1p)

\varphi(x)=x\prod_{p|x}(1-\frac{1}{p})

那么显然,对于互质的两个数x,yx,yx,y,其质因数的集合完全不相同,就有:

φ(xy)=[xy∏p|xy(1−1p)]φ(xy)=[xy∏p|xy(1−1p)]

\varphi(xy)=[xy\prod_{p|xy}(1-\frac{1}{p})]

φ(xy)=[x∏p1|x(1−1p1)]×[y∏p2|x(1−1p2)]φ(xy)=[x∏p1|x(1−1p1)]×[y∏p2|x(1−1p2)]

\varphi(xy)=[x\prod_{p_1|x}(1-\frac{1}{p_1})]\times [y\prod_{p_2|x}(1-\frac{1}{p_2})]

φ(xy)=φ(x)×φ(y)φ(xy)=φ(x)×φ(y)

\varphi(xy)=\varphi(x)\times \varphi(y)

所以,欧拉函数是积性的。

另外,欧拉函数还可以由莫比乌斯函数推导,具体的将在莫比乌斯反演总结中叙述。

欧拉函数的线筛

设T=i×p[j]T=i×p[j]T=i\times p[j]

1.当TTT为素数时,显然,与T" role="presentation" style="position: relative;">TTT互质的数有T−1T−1T-1个;

2.当TTT拥有多个最小质因子(即i mod p[j]=0" role="presentation" style="position: relative;">i mod p[j]=0i mod p[j]=0i\ mod\ p[j]=0)时,根据上面最初的公式,iii与T" role="presentation" style="position: relative;">TTT的质因子集合是一样的,所以区别就在于前面的系数,故φ(T)=φ(i)×p[j]φ(T)=φ(i)×p[j]\varphi(T)=\varphi(i)\times p[j];

3.当TTT的最小质因子仅有一个(即i mod p[j]≠0" role="presentation" style="position: relative;">i mod p[j]≠0i mod p[j]≠0i\ mod\ p[j]\ne 0)时,显然gcd(i,p[j])=1gcd(i,p[j])=1gcd(i,p[j])=1,由于欧拉函数为积性函数,所以有φ(T)=φ(i)×φ(p[j])=φ(i)×(p[j]−1)φ(T)=φ(i)×φ(p[j])=φ(i)×(p[j]−1)\varphi(T)=\varphi(i)\times\varphi(p[j])=\varphi(i)\times(p[j]-1);

讨论完毕,得到线筛方程:

φ(T)=⎧⎩⎨⎪⎪T−1φ(i)×p[j]φ(i)×(p[j]−1)T∈Primei mod p[j]=0i mod p[j]≠0φ(T)={T−1T∈Primeφ(i)×p[j]imodp[j]=0φ(i)×(p[j]−1)imodp[j]≠0

\varphi(T)=\left\{ \begin{array}\\ T-1&\\ \varphi(i)\times p[j]&\\ \varphi(i)\times(p[j]-1)&\\ \end{array}\right.

代码
void get()
{R i,j,t;check[1]=phi[1]=1;for(i=2;i<=N;++i){if(!check[i])p[++p[0]]=i,phi[i]=i-1;for(j=1;j<=p[0];++j){t=i*p[j];if(t>N)break;check[t]=1;if(i%p[j]==0){phi[t]=phi[i]*p[j];break;}phi[t]=phi[i]*(p[j]-1);}phi[i]+=phi[i-1];}
}

[线筛五连]线筛欧拉函数相关推荐

  1. 欧拉函数+狄利克雷卷积+莫比乌斯函数+莫比乌斯反演+整除分块+杜教筛

    Powered by:NEFU AB-IN 文章目录 欧拉函数 狄利克雷卷积 莫比乌斯函数 莫比乌斯反演 P3455 [POI2007]ZAP-Queries 整除分块 P2522 [HAOI2011 ...

  2. 874. 筛法求欧拉函数

    874. 筛法求欧拉函数 题目 代码 题目 给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉 ...

  3. 杜教筛 (包括线筛) 莫比乌斯函数前缀和 欧拉函数前缀和 因数和函数前缀和 因子个数前缀和 ( 分析 )...

    对于莫比乌斯函数 和 欧拉函数  小于 1e8差不多都可线筛    1e12以内  杜教筛 代码针对洛古  p4213  n<=(1<<31)-1  杜教筛 #include< ...

  4. 牛客小白月赛12 D 月月给华华出题 (欧拉函数,数论,线筛)

    链接:https://ac.nowcoder.com/acm/contest/392/D 来源:牛客网 月月给华华出题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K, ...

  5. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  6. Euler:欧拉函数&素数筛

    一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式:   其中p1, p2--pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, ...

  7. 中高级数论 [欧拉函数线性筛,二次剩余]

    欧拉函数线性筛 对于素数ppp, φ(p∗i)={p−1i=1p∗φ(i)p∣i(p−1)∗φ(i)p∤i\varphi (p*i)= \begin{cases} p-1& i=1\\ p*\ ...

  8. 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)

    [目录] 一.素数筛 1.素数判断 2.素数普通筛 3.素数线性筛 4.素数区间筛 二.欧拉函数筛 三.莫比乌斯函数筛 [素数筛] 1.直接判定质数 bool judgePrime( int num ...

  9. 欧拉线性筛 与 欧拉函数 + 几道例题

    欧拉线性筛 生成素数表prime[]数组 const int maxn = 1e7+5; int prime[maxn]; int visit[maxn]; void Prime(){memset(v ...

  10. matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...

    数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...

最新文章

  1. Linux-LAMP-访问控制Directory
  2. paho mqtt 订阅主题的处理注意事项
  3. python写界面进度条程序_Python中如何写控制台进度条的整理
  4. Akka的Hello World(三)Actor失败处理
  5. python列表常用方法_第24p,必须掌握,列表的常用方法
  6. 线性Attention的探索:Attention必须有个Softmax吗?
  7. 职业生涯中的愚蠢想法
  8. MySQL 常用语法 之 DISTINCT
  9. hadoop集群的搭建(分布式安装)
  10. url中 斜杠如何传输_如何在父子页面中传输数据(layer)
  11. innerHTML和outerHTML的区别
  12. 5G与IoT将成为IPv6强大驱动力
  13. Spring中使用 InitializingBean
  14. Word 2007~2010手动双面打印设置
  15. 告别巴蒂和你的年少时代--当Batigol成为永恒
  16. day17.什么是堆栈
  17. 【MC 网易-我的世界-mod开发基础笔记】 --- 常用的在线工具
  18. 【数据库基础】数据库的视图操作
  19. CAD软件几何数据存储原理
  20. 东南大学洪伟教授评述:毫米波与太赫兹技术

热门文章

  1. css background 旋转_纯CSS画小电视
  2. 【不能执行已释放的 sript 代码】 已解决 命名【疾风】
  3. 怎么破坏联合索引,使ABC的联合索引,走B的索引
  4. C++/QT控制通过VISA控制硬件设备,超级容易学会的控制硬件方法
  5. php 留言回复对话_php实现留言板功能(会话控制)
  6. win10计算机维护,关掉win10系统自动维护功能的方法【图文教程】
  7. 《CLR via C# 》第三版 英文原版电子书下载
  8. 2019.03.30 图解HTTP
  9. Cordova - 彻底搞定安卓中的微信支付插件!
  10. python-PIL-16bit-灰度图像生成-tiff