本文讨论费马小定理、欧拉定理及其扩展。这些定理解决了任意模数下任意大指数的幂的计算问题。

费马小定理

费马小定理(Fermat’s little theorem)是数论中最基础的定理之一。它也是 Fermat 素性测试 的理论基础。

费马小定理

是素数。对于任意整数 ,都成立 .

定理

是素数。对于任意整数 ,都成立 .

这两个同余关系在 时是等价的;而在 时, 平凡地成立。因此,这两个命题是等价的。这两个命题常常都称作费马小定理。

费马小定理的逆命题并不成立。即使对于所有与 互素的 ,都有 ,那么, 也未必是素数。相关讨论详见 Fermat 素性测试 一节。

欧拉定理

欧拉定理(Euler’s theorem)将费马小定理推广到了一般模数的情形,但仍然要求底数与指数互素。

欧拉定理

对于整数 和整数 ,且 ,有 ,其中,欧拉函数

对于素数 ,有 ,因此,费马小定理是欧拉定理的一个特例。另外,欧拉定理中的指数 在一般情形下并非使得该式成立的最小指数。它可以改进到 ,其中,Carmichael 函数。关于相关结论的代数背景,可以参考 整数同余类的乘法群 一节。

扩展欧拉定理

扩展欧拉定理 1 进一步将结论推广到了底数与指数不互素的情形。由此,它彻底解决了任意模数下任意底数的幂次计算问题,将它们转化为指数小于 的情形,从而可以通过 快速幂 时间内计算。

扩展欧拉定理

对于任意正整数 、整数 和非负整数 ,有

第二种情形是在说,如果 ,那么,就无需继续降幂,直接应用快速幂即可;而第三种和第一种情形的最大区别是,通过取余降幂之后,是否需要加上一项 。当然,将第一种情形合并进入第二、三种情形也是正确的。

直观理解

在严格证明定理之前,可以首先直观理解定理的含义。

考虑余数 随着 增大而变化的情况。由于余数的取值一定在区间 内,而 有无限多个。将 看作这些余数结点之间的有向边。那么,一定可以构成如图所示的循环。

扩展欧拉定理说明,这些循环可能是纯循环(第一种情形)或者混循环(第二、三种情形)。纯循环中,没有结点存在两个前驱,而混循环中就会出现这样的情形。因此,对于一般的情况,只需要能够求出循环节的长度和进入循环节之前的长度,就可以利用这个性质进行降幂。

严格证明

本节给出扩展欧拉定理的严格证明。

例题

本节通过一道例题展示扩展欧拉定理的一个经典应用——计算任意模数下的幂塔。幂塔(power tower)指形如 的式子,其中, 是 Knuth 箭头记号,而 是一系列非负整数。

组测试。每组测试中,给定 ,求 。其中, 表示由 组成的幂塔。或者,形式化地,定义

规定

习题

参考资料与注释

Footnotes

  1. 这一名字主要出现在算法竞赛圈中,而并非该结论的通用名称。