【专题】欧拉函数
来源:互联网 发布:电商系统源码 编辑:程序博客网 时间:2024/05/22 06:42
欧拉函数
欧拉函数定义:欧拉函数
定义及定理
定义1(算数函数): 定义在所有正整数上的函数称为算数函数
定义2(积性函数):算数函数
定理1:如果
定理2:如果p是素数,那么
定理3:设p是素数,a是一个正整数,那么
定理4:设m和n是互素的正整数,那么
定理5:设
- 推论 当n为奇数时,有
ϕ(2n)=ϕ(n)
定理6:设n是一个大于2的正整数,那么
定理7:设n是一个正整数,那么
常用定理
欧拉定理:对任何两个互质的正整数
费马小定理:当m是质数时且a与m互质,
证明
定理(1)(2)显而易见
定理3根据欧拉函数的定义易得
定理4也就是证明欧拉函数是积性函数,具体证明见百度,好像还不太简单
定理5可以由定理(1)(3)(4)推出
费马小定理的证明参考《算法概论》
应用
1.求欧拉函数的值,以POJ2407这道题为模板
题意:给出一个正整数n,小于n且和n互素的正整数有多少个?
#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<cstdlib>#include<queue>using namespace std;const int MAXN=50005;int p[MAXN+1];//保存素数,下标从1开始int bj[MAXN+1];//未被标记的表示素数void Prime(int p[],int bj[])//线筛素数{ memset(bj,0,sizeof(bj)); bj[0]=bj[1]=1; int cnt=0; for(int i=1;i<=MAXN;i++) { if(bj[i]==0)p[++cnt]=i; for(int j=1;j<=cnt && i*p[j]<MAXN;j++) { bj[i*p[j]]=1; if((i%p[j])==0)break; } }}int Phi(int n){ int ans=n; for(int i=1;p[i]*p[i]<=n;i++) { if(n%p[i]==0)//找素因子 { ans=ans-ans/p[i]; while(n%p[i]==0)n/=p[i]; } } if(n>1)ans=ans-ans/n; return ans;}int main(){ int n; Prime(p,bj); while(scanf("%d",&n)!=EOF && n) { cout<<Phi(n)<<endl; }}
0 0
- 【专题】欧拉函数
- 数论专题小结:欧拉函数
- ACM:数论专题(5)——欧拉函数
- 欧拉函数
- 欧拉函数
- Relatives 【欧拉函数】
- 欧拉函数
- POJ_2407_欧拉函数
- 欧拉函数
- hdu_3501_欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数应用
- 欧拉函数
- 如何将Excel数据导入MATLAB中
- java面向对象程序设计之封装
- 利用Python数据分析:Numpy基础(六)
- mysql学习之主从复制
- 不使用第三方变量,交换两个变量的值
- 【专题】欧拉函数
- MATLAB如何读写Excel数据文件
- mysql索引创建修改删除
- 自信的重要性
- Linux利用iptables开放指定端口的方法
- 最长公共子序列
- 记忆化搜索(Mahmoud and a Message,cf 766C)
- 使用JavaWeb编写的基于MySQL博客模板-可直接使用
- 文献综述-家装风格自动分类技术综述