当前位置:网站首页>浅层了解欧拉函数
浅层了解欧拉函数
2022-07-31 05:21:00 【im34v】
基础知识
根据算数基本定理:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积,即 N = p 1 α 1 p 2 α 2 . . . p n α n N={p_1}^{α_1}{p_2}^{α_2}...{p_n}^{α_n} N=p1α1p2α2...pnαn, 其中 p 1 、 p 2 、 . . . 、 p n {p_1}、{p_2}、...、{p_n} p1、p2、...、pn 称为N的质因数
e g : 12 = 2 ∗ 2 ∗ 3 = 2 2 ∗ 3 eg:12=2*2*3={2}^{2}*3 eg:12=2∗2∗3=22∗3
欧拉函数
通式: φ ( n ) = n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) . . . ( 1 − 1 p n ) φ(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_n}) φ(n)=n(1−p11)(1−p21)...(1−pn1),这里的 p 1 、 p 2 、 . . . 、 p n {p_1}、{p_2}、...、{p_n} p1、p2、...、pn 也就是上面基础知识所介绍的质因数。
欧拉函数解决的是小于n的正整数中与n互质的数的数目问题,因此 φ ( 1 ) = 1 φ(1)=1 φ(1)=1。
e g : eg: eg:由 12 = 2 ∗ 2 ∗ 3 = 2 2 ∗ 3 12=2*2*3={2}^{2}*3 12=2∗2∗3=22∗3,得 φ ( 12 ) = 12 ∗ ( 1 − 1 2 ) ∗ ( 1 − 1 3 ) = 4 φ(12)=12*(1-\frac{1}{2})*(1-\frac{1}{3})=4 φ(12)=12∗(1−21)∗(1−31)=4 。
我们列举小于12的正整数,1、2、3、4、5、6、7、8、9、10、11,发现与12互质的数字是 1、5、7、11,正好是4个,这也侧面说明了欧拉函数的正确性。
实现代码
//求一个数的欧拉函数值
int Euler(int n){
int phi=n;
//为什么i只需要到sqrt(n)呢?因为两个大于sqrt(n)的数相乘就会大于n。
for(int i=2;i*i<=n;++i){
if(n%i==0)phi=phi/i*(i-1); //找到质因数i
while(n%i==0)n/=i; //消去i
}
if(n>1)phi=phi/n*(n-1); //特判
return phi;
}
//区间预处理欧拉函数
void euler(int n){
for(int i=1;i<=n;++i)Phi[i]=i; //假设i是质数
for(int i=2;i<=n;++i){
if(Phi[i]==i){
//Phi[i]==i说明i是质数
for(int j=i;j<=n;j+=i){
Phi[j]=Phi[j]/i*(i-1);
}
}
}
}
欧拉函数的性质
通过代码的运行结果,我们可以发现欧拉函数的一些性质:(不严谨但是直观)
1、n为质数时, φ ( n ) = n − 1 φ(n)=n-1 φ(n)=n−1
2、n为奇质数时, φ ( 2 n ) = φ ( n ) φ(2n)=φ(n) φ(2n)=φ(n)
积性函数
积性函数指对于所有互质的整数a和b有性质 f ( a b ) = f ( a ) f ( b ) f(ab)=f(a)f(b) f(ab)=f(a)f(b) 的数论函数,其中欧拉函数就属于积性函数,即 g c d ( m , n ) = = 1 时 , φ ( m n ) = φ ( m ) φ ( n ) gcd(m,n)==1时,φ(mn)=φ(m)φ(n) gcd(m,n)==1时,φ(mn)=φ(m)φ(n)。
边栏推荐
猜你喜欢
随机推荐
OneManager搭建
常用浏览器内核的了解、ES5和ES6的区别、ES6的更新的笔试题
TypeScript进阶
读写文件,异常,模块和包
client
APP测试:测试流程及常规测试内容
银河麒麟v10 sp1 安装 PostgreSQL 11.16
如何在uni-app中选择一个合适的UI组件库
VNC 启动脚本
Wlan实验(ENSP)
DOM-DOM的介绍以及通过方法获取元素
面试总爱问的一个问题,你为什么离职上一份工作?
js原型详解
Oracle入门 06 - Windows 服务器安装配置
Dart入门
Webrtc从理论到实践一:初识
ES6-Map和Set
DOM操作-事件的绑定与解绑
编辑时过滤当前节点及根据限制的层数过滤数据
使用powerDesigner反向工程生成Entity