关于欧拉函数的一些理解

来源:互联网 发布:linux sqlplus 乱码 编辑:程序博客网 时间:2024/06/04 18:05

先丢上定义

phi(x)=x*(pi-1)/pi;  //pi为x的所有因子。


/pi 相当于区间长度x分为pi部分,每个小部分有一个与数与x的不互质,所以乘(pi-1)..


性质

1. x为质数 phi(x)=x-1;

2、gcd(a,x)==1   有a^phi(x)=1(mod x);

3.根据1,2性质  可以证明费马小定理  当x为质数&&gcd(a,x)==1有  a^(x-1)=1(mod x);

4.当x为奇数 phi(2*x)=phi(x);

5.欧拉函数为积性函数 若m,n互质,phi(mn)=phi(m)*phi(n);

6、 phi(x)=n  如果n为奇数   说明x=1;


int euler_phi(int n){  //O(logn)int res=n;for(int i=2;i*i<=n;i++){if(res%i==0){res=res/i*(i-1);for(;n%i==0;n/=i);}}if(n!=1) res=res/n*(n-1);return res;}void euler_phi2(){ //O(n)打表for(int i=0;i<MAX_N;i++) euler[i]=i;for(int i=2;i<MAX_N;i++){if(euler[i]==i){for(int j=i;j<MAX_N;j+=i) euler[j]=euler[j]/i*(i-1);}}}



原创粉丝点击