欧拉函数
来源:互联网 发布:战地1狙击枪数据 编辑:程序博客网 时间:2024/05/16 02:34
这里面有详细的解释
/*线性筛O(n)时间复杂度内筛出maxn内欧拉函数值*/int m[maxn],phi[maxn],p[maxn],pt;//m[i]是i的最小素因数,p是素数表,pt是素数个数,phi[i]是i的欧拉函数int make(){ phi[1]=1; int k; for(int i=2;i<maxn;i++) { if(!m[i])//i是素数 p[pt++]=m[i]=i,phi[i]=i-1; for(int j=0;j<pt&&(k=p[j]*i)<maxn;j++) { m[k]=p[j]; if(m[i]==p[j])//为了保证以后的数不被再筛,要break { phi[k]=phi[i]*p[j];/*这里的phi[k]与phi[i]后面的∏(p[i]-1)/p[i]都一样(m[i]==p[j])只差一个p[j],就可以保证∏(p[i]-1)/p[i]前面也一样了*/ break; } else phi[k]=phi[i]*(p[j]-1);//积性函数性质,f(i*k)=f(i)*f(k) } }}
单个数的欧拉值
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long longusing namespace std;LL get_eular(LL n){ LL 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;}int main(){ LL n; while(~scanf("%lld",&n)) { printf("%lld\n",get_eular(n)); }}
阅读全文
0 0
- 欧拉函数
- 欧拉函数
- Relatives 【欧拉函数】
- 欧拉函数
- POJ_2407_欧拉函数
- 欧拉函数
- hdu_3501_欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数应用
- 欧拉函数
- 欧拉函数
- 欧拉函数
- ACM-欧拉函数
- X Chen笔记--- 解决virt-manager启动管理器出错:unsupported format character
- Android View 的滚动原理和 Scroller、VelocityTracker 类的使用
- JavaWeb-Servlet编程 Part1
- JavaScript的学习(七)--事件
- Servlet --cookie编码保存中文信息
- 欧拉函数
- Java String类与StringBuffer类的区别
- 关闭应用程序池之后,重启失败
- js 常见的算法
- 运行tuxedo自带例子simpapp,测试tuxedo安装
- APP微信支付开发的流程
- JS获取2017-06-10格式的日期
- 异步标签与事件
- ffmpeg解码jpg并编码成h264