Matlab在数论研究中的应用
2015-10-14罗亮冰
罗亮冰
摘 要 运用Matlab软件的循环结构和“isprime”函数找出>6的所有满足“ = +”(,均为质数)的形式分解,以及所有的孪生素数,从而实现计算机在Matlab软件所允许的数值范围内验证哥德巴赫猜想和孪生素数猜想。
关键词 Matlab 验证 偶数 质数 孪生素数
中图分类号:TP317 文献标识码:A DOI:10.16400/j.cnki.kjdkz.2015.09.037
Application of Matlab in Number Theory Research
——Use Matlab to Verify the Goldbach Conjecture and the Twin Prime Conjecture
LUO Liangbing
(School of Mathematics and Statistics, Wuhan University, Wuhan, Hubei 430072)
Abstract Revolving structure Matlab software and "isprime" function to find> 6 all meet the "= +" (, are prime numbers) in the form of decomposition, as well as all twin primes, in order to achieve value within the scope of computer software in Matlab allowed verify Goldbach conjecture and the twin prime conjecture.
Key words Matlab; verification; even; prime number; twin primes
1 问题概述
1.1 哥德巴赫猜想
哥德巴赫猜想源自1742年德国数学家哥德巴赫给瑞士数学家欧拉的信中所提出的猜想,欧拉在回信中也提出另一等价版本。而今日数学界公认的猜想则为欧拉版本的陈述,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。从关于偶数的哥德巴赫猜想,可推出:任一大于7的奇数都可写成三个质数之和的猜想。后者称为“弱哥德巴赫猜想”或“关于奇数的哥德巴赫猜想”。若关于偶数的哥德巴赫猜想成立,则关于奇数的哥德巴赫猜想也成立。本文仅讨论“强哥德巴赫猜想”。
1.2 孪生素数猜想
孪生素数就是指相差2的素数对,例如3和5,5和7,11和13……孪生素数猜想正式由希尔伯特在1900年国际数学家大会的报告中提出:存在无穷多个素数,使得 + 2是素数。早在1849年,阿尔方·德·波利尼亚克就已提出了一般的猜想:对所有自然数k,存在无穷多个素数对(, + 2),而 = 1的情况就是孪生素数猜想。
1.3 研究意义
我是数学专业的学生,数论是我的专业课之一,我知道哥德巴赫猜想和孪生素数猜想是数论研究中二个古老而著名的未解决问题,历代数学家前赴后继、耗尽心力,至今仍没有用纯数学理论的方法证明。而在数论研究中,常常涉及大整数的运算,也通常需要调用一些相关的结果,过去这是相当麻烦的事情。而利用同一思想方法,运用Matlab(在其所允许的数值范围内)验证哥德巴赫猜想,以及验证孪生素数猜想并找出所有的孪生素数对,根据研究需要制定出偶数分解为两质数之和形式的列表和孪生素数表,可方便数论的研究。
2问题分析
2.1 验证哥德巴赫猜想的分析
在Matlab软件所允许的数值范围内,对于任意指定范围内或者任一组数中的任一大于6 的偶数,可利用Matlab软件的循环结构,找出的所有满足“ n=m+p”(其中,mp”(其中,,均为大于1的正整数)的形式的分解,再利用Matlab软件的“isprime”函数判断、筛选中,所有满足m、p均为质数的m=P
的形式分解,从而可用计算机在任意指定范围内验证哥德巴赫猜想。由于现今数学界已不使用“1也是素数”这个约定,所以本文讨论大于6的偶数。
2.2 找出所有孪生素数的分析
在Matlab软件所允许的数值范围内,对于任意指定范围内,可利用Matlab软件的循环结构和“isprime”函数找出所有的孪生素数。
3问题解决
3.1 验证哥德巴赫猜想
3.1.1 基本思路
建立一个M函数文件,在此文件中编写任一指定条件下验证哥德巴赫猜想的程序。先利用Matlab软件的“input”函数将控制权交给键盘,确定我们想要在何种条件下验证哥德巴赫猜想(在一定范围内验证按“1”,对一组数验证则按“0”即可),再利用if-else-end双分支条件语句分别对在一定范围内(键盘输入为“1”)以及一组数验证(键盘输入为“0”)的情况进行处理。
当我们已选定对一组数验证时,再次利用Matlab软件的“input”函数将控制权交给键盘,以类似[abcd]的向量形式输入一组我们想要验证的数。利用if-else-end双分支条件语句和逻辑运算符“&&”判断输入的每个数是否合理。对于该组数中范围不合理的数(表示为这组数中的第个),如不为偶数,或不大于6,使用“fprintf”指令显示“不合条件”。对于这组数中的每一个范围合理的数,可利用Matlab软件的for循环结构,找出的所有满足“x(j)=m+p”(其中,, 均为大于1的正整数m,p均为大于1 的正整数,p=x(j)-m)的形式的分解,再利用Matlab 软件的“isprime”函数判断每个所求得的, 是否为质数,从而找出的所有满足“x(j)=m+p””(其中,mp均为质数)的形式的分解,利用“fprintf”指令将其输出并显示在显示屏上,从而实现计算机对一组数验证哥德巴赫猜想。
而当我们选定在一定范围内验证时,再次利用Matlab软件的“input”函数将控制权交给键盘,以[]形式输入想验证哥德巴赫猜想的范围。利用if-else-end双分支条件语句和逻辑运算符“&&”判断输入范围是否合理。若设置的范围不合理,如不大于6等情况,使用“fprintf”指令显示“不合条件”。若输入范围合理(如当>,则自动交换、位置),那么,对于该指定范围内的任一大于6 的偶数,可利用Matlab软件的for循环结构,找出的所有满足“x(j)=m+p”(其中,,均为大于1的正整数,p=n-m)的形式的分解,再利用Matlab软件的“isprime”函数判断每个所求得的,是否为质数,从而找出的所有满足“n=m+p”(其中,mp,均为质数)的形式的分解,利用“fprintf”指令将其输出并显示在显示屏上,从而实现计算机在任意指定范围内验证哥德巴赫猜想。
3.1.2 验证程序
3.2 找出所有孪生素数
3.2.1 基本思路
建立一个M函数文件,在此文件中编写寻找任意指定范围内的孪生素数的程序。先利用Matlab软件的“input”函数将控制权交给键盘,以[]的形式输入寻找孪生素数的范围(如当>,则自动交换、位置)。在该指定范围内,可利用Matlab软件的for循环结构对该指定范围内的每一个正整数,进行讨论。先利用Matlab软件的“isprime”函数判断j是否为素数,若为素数,则再次利用Matlab软件的“isprime”函数判断(+2)是否为素数,若(+2)也为素数,则(, +2)为一组孪生素数,并利用“fprintf”指令将这一组孪生素数输出显示在显示屏上。从而,可以求出在任意指定范围内的所有孪生素数。
3.2.2 程序
4程序运行结果
4.1 验证哥德巴赫猜想的运行结果
4.1.1 在指定范围内验证时,运行结果如下:
4.1.2 对一组数进行验证时,运行结果如下:
4.2 任意指定范围内找出所有孪生素数的运行结果
参考文献
[1]张志涌,杨祖樱等.MATLAB教程R2012a.北京航空航天大学出版社,2010.
[2]U.杜德利.基础数论.上海科学技术出版社,1986.
[3]司钊,司琳.哥德巴赫猜想与孪生素数猜想.西北工业大学出版社,2002.