原题链接,点击此处 
欧拉函数:φ(N)表示对一个正整数N,欧拉函数是小于N且与N互质的数的个数 
通式:φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 
其中p1, p2……pn为x的所有质因数,x是不为0的整数。 
注意:将n分解为最简质因数,每种质因数只用一次。 
比如 12 = 2*2*3,那么 φ(12) = 12 * (1-1/2) * (1-1/3) = 4(1,5,7,11) 
若 n = p^k ( p为 质数 ),则 φ(n) = p^k-p^(k-1) = (p-1)p^(k-1) 
特例,若n = p(k=1, p 为质数),则 φ(n) = p-p^(1-1) = p-1。 
因为质数p除了1以外的因数只有p,故1至p的整数只有p与p不互质

一些欧拉函数的性质: 
① N是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身) 
② 除了N=2,φ(N)都是偶数. 
③ 小于N且与N互质的所有数的和是φ(n)*n/2。 
④ 欧拉函数是积性函数——若m,n互质,φ(m*n)=φ(m)*φ(n)。 
⑤ 当N为奇数时,φ(2*N)=φ(N) 
⑥若N=p^k,φ(N)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟N互质。 
⑦ 当N是质数时,φ(N) = N-1 
相关性质证明参考:http://blog.csdn.net/yxuanwkeith/article/details/52387873 
PPT讲解:http://max.book118.com/html/2016/1025/60637698.shtm 
由于一个数n的质因数一定小于等于sqrt(n),所以时间复杂度O(sqrt(n))

#include<cstdio>
/*素数筛
phi[maxn]打表
int p[maxn];
void phi()
{
for(int i=1;i<maxn;i++) p[i]=i;
for(int i=2;i<maxn;i++){
if(p[i]==i){
for(int j=i;j<maxn;j+=i)
p[j]-=p[j]/i;
}
}
}
*/
int phi(int x)
{
int ans=x;
for(int i=;i*i<=x;i++){
if(x%i==)
ans-=ans/i;
while(x%i==) x/=i;
}//每种质因数只用一次
if(x>)
ans-=ans/x;
return ans;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
printf("%d\n",phi(n));
}

最新文章

  1. Mycat配置及使用详解.
  2. 关于SQL中的排序问题
  3. Linux初学 - 解决chkconfig Segmentation fault(core dumped)
  4. spring 下载地址
  5. linux增加根分区大小
  6. 在Main中定义student的结构体,进行年龄从大到小依次排序录入学生信息。(结构体的用法以及冒泡排序)
  7. 在.net中悄悄执行dos命令,并获取执行的结果(转)
  8. Java IO (5) - 总结
  9. linux之cat命令
  10. python模块之paramiko
  11. UIScrollView 之图片缩放
  12. jQuery2.x源码解析(DOM操作篇)
  13. Cisco banner 登陆消息提示设置命令详解
  14. AndroidStudio如何快速制作.so
  15. 14-01 Java matches类,Pattern类,matcher类
  16. 虚存管理页面置换算法 — FIFO和RUL算法模拟实现
  17. vuejs 过渡效果
  18. 阿里巴巴Java开发手册- 控制语句
  19. Kafka 0.7.2 单机环境搭建
  20. 表空间_暂时表空间引起的错误:ora-01652 小例

热门文章

  1. hdu 2821(dfs)
  2. 快学scala习题解答--第五章 类
  3. Android 中加载几百张图片做帧动画防止 OOM 的解决方案
  4. oracle修改用户密码
  5. Excel 一个工作表进行按行数拆分
  6. HYSBZ 2243(染色)
  7. vue ios自带拼音全键输入法模糊查询兼容性问题
  8. spring-boot 打包成 war包发布
  9. Java基础之Calendar类、JNDI之XML
  10. Python IDE软件PyCharm通用激活方法