欧拉函数学习笔记
前言
本人能力有限,有错误欢迎指出。
定义
公式
设
性质
- 欧拉函数是积性函数。具体地:
- 当
时, 。 - 否则,
。
,即 的因数(包括 和 )的欧拉函数之和等于 。
代码
- 求单个
。
long long eular(long long n) { long long ans=n; for(int i=2;i*i<=n;i++) { if(n%i==0) { ans−=ans/i; while(n%i==0) n/=i; } } if(n>1)ans−=ans/n; return ans; }
- 求多个
,利用欧拉筛和性质 。
void init(){ phi[1]=1; for(int i=2;i<=n;i++){ if(!is[i]){ pri[++tot]=i; phi[i]=i-1; } for(int j=1;j<=tot&&i*pri[j]<=n;j++){ is[i*pri[j]]=1; if(i%pri[j]==0){ phi[i*pri[j]]=phi[i]*pri[j]; break; } else{ phi[i*pri[j]]=phi[i]*phi[pri[j]]; } } } }
习题
本文作者:zhangjiting
本文链接:https://www.cnblogs.com/zhangjiting/p/18000196
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步