威尔逊定理的Python简单验证

2022-04-20 14:43王德贵
电脑报 2022年14期
关键词:数论考试内容正整数

王德贵

威尔逊定理是以英格兰数学家爱德华·华林的学生约翰·威尔逊命名的,尽管这对师生未能给出证明。华林于1770年提出该定理,1773年由拉格朗日首次证明。威尔逊定理是判定一个自然数是否为素数的充分必要条件,它也是数论四大定理(威尔逊定理、欧拉定理、孙子定理、费马小定理)之一。

今天我们就用Python来简单地验证威尔逊定理及其逆定理。

18世纪中叶,约翰·威尔逊发现了一个极为罕见的关系:取从1到某个质数所有连续正整数的乘积,例如从1乘到11,即11的阶乘11!,除去11这个数,得10!。无疑10!不能被11整除。

然而,如果给10!加上1的话,1×2×3×4×5×6×7×8×9×10+1=3628801,怎么也不会想到,3628801却能被11整除(3628801÷11=329891)。类似地,从1到质数7的阶乘7!中略去7,再加上1,得1×2×3×4×5×6+1=721,721也能被7整除(721÷7=103)。那么其他的质数是不是也有这样的规律呢?

威尔逊定理可以简述为:

当p为质数时,(p-1)!+1能被p整除。

威尔逊定理逆定理可以简述为:

若一个数 (p-1)!+1 能被 p 整除,那么 p 为质数。

威尔逊定理已经被证明,今天我们只做简单验证。

数论四大定理之中,我们验证了费马小定理。如果想了解更深入的知识,大家可以参考相关资料。今天我们利用Python只做简单的验证。

我们任意输入一个正整数p,验证(p-1)!+1 能被 p 整除,如果整除则p为质数,否则为合数。当然我们也知道,如果输入的p是质数,(p-1)!+1 一定能被 p 整除。这样就验证了威尔逊定理和逆定理。

阶乘问题,我们用自定义函数计算出结果,然后加上1赋值给变量m保存然后我们判断m是否能被 p 整除,如果能整除,则p为质数,否则为合数。

范围验证即输入一个范围,依次验证这个范围内的整数是否为质数,如果是质数则添加到质数列表中,最后显示出来。这也是获得一定范围内质数的又一种方法。

根据前面的设计和分析,编写程序。

程序设计涉及的是等级考试的自定义函数(四级内容),如果不用自定义函数,则只涉及程序结构知识点,属于二级内容。

1.验证:即输入单个数据的验证

(1)二级考试内容:涉及程序設计的三种结构(图1)

(2)四级考试内容:利用自定义函数(图2)

两个程序运行结果相同:(图3)

2.范围:即在一定范围内验证威尔逊定理及其逆定理

(1)用二级考试内容“循环”来验证。(图4)

(2)用四级考试内容“递推-自定义函数”来验证。(图5)

(3)用四级考试内容“递归-自定义函数”来验证。(图6)

三个程序的验证结果是一样的。(图7)

威尔逊定理及其逆定理的验证测试,可以验证一个正整数,也可以验证一定范围内的所有正整数,这种方法也可以得到一定范围内的所有质数。

需要注意的是,如果阶乘运算使用了递归,则需要注意递归深度的限制。

有关威尔逊定理及数论四大定理问题,有兴趣的同学可以参考相关资料,本文不作详细介绍。如有不当之处,请各位同仁、朋友斧正。

猜你喜欢
数论考试内容正整数
赖彬文
蔡国成
最强大脑
我国成人高考内容改革的探索与研究
论能力测评导向的高校考试改革
专题五:初等数论与组合数学
浅析全国计算机等级考试一级MSOffice考试内容及应对策略
对一道IMO题的再研究
勾股数杂谈