费马小定理的Python简单验证

2022-03-24 05:06:16王德贵
电脑报 2022年10期
关键词:费马互质数论

王德贵

我们在往期利用Python验证过费马大定理,这是数学史上关于数论的经典问题,其实费马小定理也一样享誉数学界,它是初等数论四大定理之一。

今天我们就用Python来简单地验证费马小定理。

在1636年提出的费马小定理是数论中的一个重要定理。它是初等数论四大定理之一:威尔逊定理、欧拉定理(数论中的欧拉定理)、中国剩余定理(又称孙子定理)、费马小定理。在初等数论中有着非常广泛和重要的应用。实际上,它是欧拉定理的一个特殊情况。

费马小定理可以简述为:

如果p是一个质数,而整数a不是p的倍数,则有a的(p-1)次幂除以p余1。

数学表达式为:

假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p)

还有另一种写法:

假如p是质数,a为整数,那么 a^p ≡a(mod p)

此处三横线为恒等号。有关费马小定理的相关知识这里不做介绍,有兴趣的朋友可以自己去学习,费马小定理已经被证明,今天我们只做简单验证。

我看到这个定理内容,就想到了勾股数,想用Python验证勾股数的方法,来验证费马小定理。

如果想了解更深入的知识,大家可以参考相关资料。今天我们利用Python只做简单的验证。

验证的范围越大,幂次越高,时间复杂度会几何级数增大,大家可以自行测试。

程序设计不是很难,是等级考试二级内容,而自定义函数是四级内容。

首先生成p范围内的质数列表,并判断p是否为质数。如果不是质数,则重新输入,如果是质数,则提示输入a,如果a与p互质,则提示费马小定理成立,运行结果如下。

如果a是p的倍数,则余数为0,即可以整除p,这个比较好理解。

运行结果:

费马小定理的另一种形式,我们也来验证一下,程序设计如下。基本思路还是先生成p范围内的所有质数列表,然后判断p是否为质数。

如果p不是质数,重新输入p值。如果p是质数,则提示输入任意整数a,然后进行验证,计算并输出结果。

定理的验证测试,多输入几个值,就可以了。也可以在一定范围内验证。

比如,输入一个质数p,让a在一定范围内验证即可。程序如下。

输入p为质数,再提示输入a的最小值和最大值,然后进行逐一验证,并输出结果。

在输入范围30-40时,依次验证,a与p互质时,费马小定理均成立,而当a=34时,a是p的倍数,余数为0。

費马在提出定理时,还说明了a是一个素数的要求,但是这个要求实际上是不必要的。

从费马小定理还引申了很多相关数论问题,有兴趣的同学可以参考相关资料,本文不做介绍。如有不当之处,请各位同仁、朋友斧正。

猜你喜欢
费马互质数论
基于互质阵列的信号波达方向估计算法
航空兵器(2023年2期)2023-06-25 03:04:39
一类涉及数论知识的组合题的常见解法
中等数学(2022年2期)2022-06-05 07:10:46
几类递推数列的数论性质
中等数学(2021年2期)2021-07-22 06:21:52
赖彬文
书香两岸(2020年3期)2020-06-29 12:33:45
数论中的升幂引理及其应用
中等数学(2020年11期)2020-04-13 06:01:06
费马—欧拉两平方和定理
中等数学(2019年1期)2019-05-20 09:45:18
反证法与高次费马大定理
歪写数学史:史上最牛公务员皮埃尔·费马
比尔猜想与费马大定理
Short-range Radar Detection with(M,N)-Coprime Array Configurations
雷达学报(2016年3期)2016-10-09 11:03:19