博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性筛欧拉函数
阅读量:5830 次
发布时间:2019-06-18

本文共 1065 字,大约阅读时间需要 3 分钟。

首先有以下性质:(p 为素数)

1. φ(p)=p-1
2. 如果i mod p==0,那么φ( i*p )=p*φ( i )
3. 若i mod p≠0,那么φ(i*p)=φ(i)*(p-1)

证明见,在此表示感谢

典型题目见

#include
// 在筛素数的同时,把欧拉函数求出 #include
#include
#include
#include
#define M 1000001using namespace std;int phi[M],prime[M],tot,ans;bool notp[M];void getphi(){ phi[1]=1; for(int i=2;i<=M;i++) { if(!notp[i]) { prime[++tot]=i; phi[i]=i-1;//i是素数 } for(int j=1;j<=tot&&i*prime[j]<=M;j++) { notp[i*prime[j]]=1;//不是素数 if(i%prime[j]==0)// 如果i mod p==0,那么φ( i*p )=p*φ( i ) { phi[i*prime[j]]=phi[i]*prime[j]; break;//筛素数省时 } // 若i mod p≠0,那么φ(i*p)=φ(i)*(p-1) else phi[i*prime[j]]=phi[i]*(prime[j]-1); } } return;}int main(){ getphi(); for(int i=1;i<=100;i++) { printf("%d %d\n",i,phi[i]); } return 0;}

转载于:https://www.cnblogs.com/dfsac/p/7587936.html

你可能感兴趣的文章
jetty在eclipse下报错:PWC6345
查看>>
常用汉字的unicode编码
查看>>
最长公共子序列---动态规划
查看>>
网络 基础 6
查看>>
neo4j传参
查看>>
五线谱
查看>>
gulp es6 转 es5
查看>>
iText
查看>>
Java 程序流程语句
查看>>
集合框架-Collection集合
查看>>
从客户端中检测到有潜在危险的 Request.Form 值
查看>>
避免使用CSS表达式
查看>>
Dubbo
查看>>
远程使用tomcat8的首页的管理工具
查看>>
FCKEditor在IE10下的不兼容问题解决方法
查看>>
LeetCode - 6. ZigZag Conversion
查看>>
一周乱谈 - 中文分词
查看>>
KMP算法 - 求最小覆盖子串
查看>>
C++typedefine用法小结
查看>>
【转】移动web资源整理
查看>>