欧拉函数与欧拉定理

article/2025/11/10 18:58:56

转载请说明出处:http://blog.csdn.net/leader_one/article/details/77619762

说在前面

按照惯例,出于尊重,还是简单介绍一下这位多产的学术伟人
莱昂哈德·欧拉(Leonhard Euler ,1707年4月15日~1783年9月18日),瑞士数学家、自然科学家。1707年4月15日出生于瑞士的巴塞尔,1783年9月18日于俄国圣彼得堡去世。欧拉出生于牧师家庭,自幼受父亲的影响。13岁时入读巴塞尔大学,15岁大学毕业,16岁获得硕士学位。欧拉是18世纪数学界最杰出的人物之一,他不但为数学界作出贡献,更把整个数学推至物理的领域。他是数学史上最多产的数学家,平均每年写出八百多页的论文,还写了大量的力学、分析学、几何学、变分法等的课本,《无穷小分析引论》、《微分学原理》、《积分学原理》等都成为数学界中的经典著作。欧拉对数学的研究如此之广泛,因此在许多数学的分支中也可经常见到以他的名字命名的重要常数、公式和定理。
这篇文章要讲的就是欧拉函数及欧拉定理。


欧拉函数

简介欧拉函数
首先,没有欧拉函数是没有欧拉定理滴。
在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’so totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。


如何求欧拉函数
这里有个通式
通式
(φ这个符号好难打。。就直接挂图了)
其中每个p是x互不相同的质因数,x为正整数,φ(1)=1,同时显然的任意一个质数的φ就是它自己减一。
通式的实质是将与x有大于1的公约数的数全部筛掉了。
这样求单个φ可以,但求一大串效率是不是太低了?


利用欧拉函数的特殊性质求φ
首先,p为质数
若i mod p = 0,则φ(i * p) = φ(i) * p;
若i mod p > 0,则φ(i * p) = φ(i) * (p-1);
证明自己看看同时就懂了。
这样我们O(n)的求出1~n的φ,如同用欧拉筛法求质数一样,φ也可以用筛法求质数的同时求。
直接挂代码吧:

for(i=1;i<=n;i++)
{if(prime[i]) //判断是否质数{phi[i] = i-1;num++;zs[num] = i;}//筛质数顺便求解for(j=1;i*zs[j]<=n && j<=num;j++){prime[i*zs[j]] = false;if(i%zs[j]!=0) phi[i*zs[j]] = phi[i]*phi[zs[j]];else phi[i*zs[j]] = phi[i]*zs[j];}
}

与欧拉筛法求质数的方式如出一辙。


欧拉函数的一些应用

  1. 求1~n内与n互质的数的个数,直接就是φ。
  2. 求1~n内与n互质的数的总和,就是n * φ(n)/2;(1~n内与n互质的数具有对称性,即gcd(x,n)=1,则gcd(n-x,n)=1)
  3. 接下来要讲的欧拉定理
  4. ……

欧拉定理

简介欧拉定理
若gcd(a,p)=1,则a^φ(p) ≡ 1 (mod p) 这个定理可以求乘法逆元(乘法逆元讲解)。
而且包含了费马小定理(a ^ (p-1) ≡ 1 (mod p)要求p为质数),因为当p为质数时φ(p) = p-1。


证明
将1~n中与n互质的数按顺序排布:x1,x2……xφ(n) (显然,共有φ(n)个数)
我们考虑这么一些数:
m1=a * x1;m2=a * x2;m3=a * x3 …… mφ(n) = a * xφ(n);
一、这些数中的任意两个都不模n同余
因为如果有mS≡mR (mod n) (这里假定mS更大一些),就有:
mS-mR=a(xS-xR)=qn,即n能整除a(xS-xR);
但是a与n互质,而且xS-xR < n,因而左式不可能被n整除;
也就是说这些数中的任意两个都不模n同余,φ(n)个数有φ(n)种余数。

二、这些数除n的余数都与n互质
设r = a * xi mod n,则a * xi = qn+r;
设d = gcd(qn+r,n),因为a与n互质,xi与n互质,所以qn+r与n互质,所以d = 1;
由欧几里得定理(欧几里得讲解)得,gcd(r,n) = gcd(qn+r,n);
所以gcd(r,n) = 1,即余数与n互质。

由上可知,数m1,m2,m3……mφ(n)(如果将其次序重新排列)mod n必须相应地同余于x1,x2,x3……xφ(n)。
故得出:m1 * m2 * m3……mφ(n) ≡ x1 * x2 * x3……xφ(n) (mod n)
或者说a^φ(n) * (x1 * x2 * x3……xφ(n)) ≡ x1 * x2 * x3……xφ(n) (mod n)
两边同时消去x1 * x2 * x3……xφ(n),得 a^φ(n) ≡ 1 (mod n),得证。


欧拉定理的应用及推广

求解乘法逆元;
取模时降幂 若a,n互质 a^k ≡ a^(k mod φ(n)) (mod n) 显然的;
扩展欧拉定理:
这里写图片描述
有没有觉得和上一个应用有点像?好像没什么用?
实际上功能强大,可以在 a和m不互质的时候使用,非常强的一种降幂方式,具体证明这里不在赘述,有链接(点这里)。

在处理许多关于模的问题时,尤其是OI类赛事,欧拉函数及定理是不可或缺的利器!


按照惯例再说两句

本人蒟蒻一枚,博客难免有误,发现错误的大牛牪犇可以发私信联系本人指正错误。另外本博客可能会更新,可以考虑收藏一下。
好了,暂时就讲这么多了,如果绝对这里讲解得不够详细,也可以私信联系本人交流一下。
欢迎转载,转载请说明出处,谢谢。


http://chatgpt.dhexx.cn/article/3WHi44UQ.shtml

相关文章

欧拉函数及模板

欧拉函数 什么是欧拉函数怎么计算欧拉函数欧拉函数三种常用模板素因数分解求欧拉函数欧拉函数值打表欧拉筛型欧拉函数 什么是欧拉函数 欧拉函数是小于等于x的整数中与x互质的数的个数&#xff0c;一般用φ(x)表示。特殊的&#xff0c;φ(1)1。 例如&#xff0c;φ(12)4 {1,5,7…

如何求欧拉函数~转载

三、欧拉函数 请思考以下问题&#xff1a; 任意给定正整数n&#xff0c;请问在小于等于n的正整数之中&#xff0c;有多少个与n构成互质关系&#xff1f;&#xff08;比如&#xff0c;在1到8之中&#xff0c;有多少个数与8构成互质关系&#xff1f;&#xff09; 计算这个值的方法…

欧拉函数公式证明

请思考以下问题&#xff1a; 任意给定正整数n&#xff0c;请问在小于等于n的正整数之中&#xff0c;有多少个与n构成互质关系&#xff1f;&#xff08;比如&#xff0c;在1到8之中&#xff0c;有多少个数与8构成互质关系&#xff1f;&#xff09; 计算这个值的方法就叫做欧拉函…

欧拉函数

原文链接&#xff1a;https://zh.m.wikipedia.org/zh/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0 欧拉函数 本文介绍的是小于或等于 n的正整数中与 n 互质的数的数目。关于形式为 的函数&#xff0c;详见「 欧拉函数(复变函数)」。 当 n为1至1000的整数时 的值 在数论中&#xff0…

数学知识——欧拉函数

1. 欧拉函数 定义&#xff1a;欧拉函数ψ(n) 表示1~n中与n互质的数的个数 公式&#xff1a;如果一个数可以被分解质因式为N p1α1 *p2α2……pkαk 则ψ(n) n(1 - 1/p1)(1 - 1/p2)…(1 - 1/pk) 公式由容斥原理证明&#xff0c;证明略 算法实现思路&#xff1a; 利用求一个数…

数论基础——欧拉函数

欧拉函数&#xff1a; 就是对于一个正整数n&#xff0c;小于n且和n互质的正整数&#xff08;包括1&#xff09;的个数&#xff0c;记作φ(n) 。 欧拉函数的通式&#xff1a;φ(n)n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn) 其中p1, p2……pn为n的所有质因数&#xff…

欧拉函数——数学知识(c++)

定义&#xff1a;欧拉函数表示1-N中与N互质的数的个数&#xff1b; 给定一个数n&#xff0c;求在[1,n]这个范围内两两互质的数的个数 对于这个范围内的每一个数&#xff0c;我们只要找到不超过这个数且与这个数互质的数的个数就可以了 欧拉函数用希腊字母φ表示,φ(N)表示N的欧…

欧拉函数(Euler_Function)

一、基本概述 在数论&#xff0c;对正整数n&#xff0c;欧拉函数varphi(n)是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名&#xff0c;它又称为Eulers totient function、φ函数、欧拉商数等。 二、计算公式 三、基本性质 欧拉函数用希腊字母φ表示,φ…

欧拉函数最全总结

文章目录 欧拉函数的内容一、欧拉函数的引入二、欧拉函数的定义三、欧拉函数的性质四、欧拉函数的计算方法&#xff08;一&#xff09;素数分解法&#xff08;二&#xff09;编程思维1.求n以内的所有素数2.求φ(n)3.格式化输出0-100欧拉函数表&#xff08;“x?”代表十位数&am…

什么是时间复杂度

什么是算法 算法可以理解就是一系列被控制的步骤&#xff0c;你通过按序执行这些步骤可以实现一些目标或者产生一些输出。 时间复杂度 时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数.时间复杂度常用大O表述表述&#xff0c…

算法的时间复杂度和空间复杂度详解

通常&#xff0c;对于一个给定的算法&#xff0c;我们要做 两项分析。第一是从数学上证明算法的正确性&#xff0c;这一步主要用到形式化证明的方法及相关推理模式&#xff0c;如循环不变式、数学归纳法等。而在证明算法是正确的基础上&#xff0c;第二部就是分析算法的时间复杂…

一文详解时间复杂度

一文详解时间复杂度&#xff0c;从里到外清晰认识 1. 什么是时间复杂度2. 关于大O3. 不同数据规模的差异4. 复杂表达式的化简5. O ( l o g n ) O(logn) O(logn)中的 l o g log log是以什么为底&#xff1f;举一个例子 总结 1. 什么是时间复杂度 时间复杂度是一个函数&#xff…

时间复杂度分析

该节知识点引用机械工业出版社数据结构和算法分析第2章内容 以及极客时间数据结构和算法部分知识点 时间复杂度基础分析 算法执行时间分析 时间复杂度分析更多的是对要编写的代码进行一个事前预估分析的一个过程&#xff0c;通过事前大致分析出算法执行的时间和所需要的空间…

算法时间复杂度

在 算法基础 中&#xff0c;我们简单介绍了什么是算法、对算法的要求&#xff0c;以及说了评断算法效率的两大类方法。今天我们将重点介绍衡量算法效率的一个概念——时间复杂度。 定义 在进行算法分析的时候&#xff0c;语句的总执行次数 T(n) 是关于问题规模 n&#xff08;输…

java时间复杂度计算_时间复杂度到底怎么算

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题&#xff0c;使用不同的算法&#xff0c;也许最终得到的结果是一样的&#xff0c;但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢&#xff1f; 主要还是从…

Python 时间复杂度计算

一、时间复杂度 1 常见的时间复杂度 #常量阶O(1)# 对数阶O(logn)# 线性对数阶O(nlogn)# 线性阶O(n)# 平方阶,立方阶....M次方阶O(n^2),O(n^3),O(n^m)# 指数阶O(2^n)# 阶乘阶O(n!) 算法的时间复杂度对比&#xff1a; O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2lo…

树的时间复杂度

时间复杂度是一个函数&#xff0c;它定量描述了该算法的运行时间。常见的时间复杂度有以下几种。 1&#xff0c;log(2)n&#xff0c;n&#xff0c;n log(2)n &#xff0c;n的平方&#xff0c;n的三次方&#xff0c;2的n次方&#xff0c;n! 1指的是常数。即&#xff0c;无论算法…

时间复杂度和空间复杂度详解

算法时间复杂度和空间复杂度 1.算法效率 算法效率分析分为两种&#xff1a;第一种是时间效率&#xff0c;第二种是空间效率。时间效率被称为时间复杂度&#xff0c;而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一…

全排列的时间复杂度

我们在高中的时候都学过排列组合。“如何把 n 个数据的所有排列都找出来”&#xff0c;这就是全排列的问题。我来举个例子。比如&#xff0c;1&#xff0c;2&#xff0c;3 这样 3 个数据&#xff0c;有下面这几种不同的排列&#xff1a; 1, 2, 3 1, 3, 2 2, 1, 3 2, 3, 1 3, 1…

十分钟搞定时间复杂度(算法的时间复杂度)

目录 1、什么是时间复杂度&#xff1f; 2、时间复杂度的计算 &#xff08;1&#xff09;单个循环体的推导法则 &#xff08;2&#xff09;多重循环体的推导法则 &#xff08;3&#xff09;多个时间复杂度的推导法则 &#xff08;4&#xff09;条件语句的推导法则 3、习题…