欧拉函数

来源:互联网 发布:快递免费数据管理软件 编辑:程序博客网 时间:2024/06/05 09:39

内容主要摘自百度百科:https://baike.baidu.com/item/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0?fr=aladdin

在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’so totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。
简介
通式:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
注意:每种质因数只一个。 比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4
若n是质数p的k次幂,
,因为除了p的倍数外,其他数都跟n互质。
设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值
φ:N→N,n→φ(n)称为欧拉函数。
欧拉函数是积性函数——若m,n互质,
特殊性质:当n为奇数时,
, 证明与上述类似。
若n为质数则
证明
编辑
设A, B, C是跟m, n, mn互质的数的集,据中国剩余定理,A*B和C可建立一一对应的关系。因此φ(n)的值使用算术基本定理便知,


例如
与欧拉定理、费马小定理的关系
对任何两个互质的正整数a, m(m>=2)有
即欧拉定理
当m是质数p时,此式则为:
即费马小定理。
编程实现

#include<stdio.h>#include<stdlib.h>int eular(int n){    int ret=1,i;    for(i=2;i*i<=n;i++)    {        if(n%i==0)        {            n/=i,ret*=i-1;            while(n%i==0) n/=i,ret*=i;        }    }    if(n>1) ret*=n-1;    return ret;}int main (){      int n,s;      scanf("%d",&n);      s=eular(n);      printf("%d",s);      return 0;}