欧拉函数之HDU1286 找新朋友
2015-09-25 15:29
375 查看
裸的欧拉函数题
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> #include <limits.h> #include <math.h> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <map> #include <set> #include <string> #include <sstream> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; const double pi=4.0*atan(1.0); const int MAXN=100005; //欧拉函数是求小于x并且和x互质的数的个数 // Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。 //euler(1)=1(唯一和1互质的数就是1本身)。 //欧拉公式的延伸:小于N与N互质的数和euler(n)*n/2。 //欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。 //通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。 //对于质数p,φ(p) = p - 1。注意φ(1)=1. //欧拉定理:对于互质的正整数a和n,有aφ(n) ≡ 1 mod n。 //欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。 //若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。 //特殊性质:当n为奇数时,φ(2n)=φ(n) //欧拉函数还有这样的性质: //设a为N的质因数,若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)。 int euler_phi(int n)//直接求 { int ans=n; for(int i=2;i*i<=n;i++) { if(n%i==0) { ans=ans/i*(i-1); while(n%i==0) n/=i; } } if(n>1) ans=ans/n*(n-1); return ans; } int phi[MAXN]; void phi_table(int n)//筛法打表 { for(int i=0;i<=n;i++) phi[i]=i; for(int i=2;i<=n;i++) if(phi[i]==i) for(int j=i;j<=n;j+=i) phi[j]=phi[j]/i*(i-1); } int main() { int T; int n; //phi_table(40000); while(scanf("%d",&T)!=EOF) { while(T--) { scanf("%d",&n); printf("%d\n",euler_phi(n)); } } return 0; }
相关文章推荐
- 0131 Eclipse远程调试(远程服务器端监听)
- 从网上找的Android实用代码,记录备用
- Swift - 使用UIView给页面添加4×4方格
- Swift - whose view is not in the window hierarchy 问题解决方法
- IPv6 tutorial – Part 7: Zone ID and unique local IPv6 unicast addresses
- 15道简单算法题
- hdu 1231&1003 -最大连续子序列-动态规划
- 用 ply 制作计算器
- xtrabackup一键自动化备份脚本 V2 版【原创】
- 如何快速导入大SQL文件到MySQL数据库?
- 朴素贝叶斯法的学习与分类
- opencv2-2渐变过渡各种图形滤波并输出文字
- google android audio presentation
- 32位系统-数据类型占内存字节数
- WinForm(C#)中跨线程访问控件的解决方法
- lua中table如何安全移除元素
- Swift - 告警提示框(UIAlertController)的用法
- 设计模式的六大原则
- c++primer 第三章习题(4)
- ffmpeg 的时间单位