您好,欢迎访问三七文档
素数一.实验解读如果一个大于1的自然数只能被1及它本身整除,则称该数为素数,否则称为合数。每一个合数都可以分解为若干个素数的乘积,并且在不计较素数排列顺序时这种分解是唯一的,这就是所谓的算术基本定理。Mersenne数与Fermat数是两种具有特殊结构的数。Mn=2^n-1,Fn=2^(2^n)+1。如果将素数在数轴上标出来,会发现素数的分布很不规则。我们需做实验进一步观察随着整数范围的扩大,素数是越来越稀还是越来越密?关于素数还存在许许多多富于挑战性的问题,如Goldbach猜想;大整数的素因子分解;完全数;孪生素数ertrandB猜想;青一色数的素数二.实验思路1.素数的判别与个数在大于1的自然数中,只能被1和它本身整除的数称为素数。规定Nn=p1p2......pn+1,当n=1,...,20时判断Nn是否是素数,如果不是,那么Nn能不能表示成几个素因子相乘的形式。改变n的取值范围,观察得出结论。根据以上的结果,猜测素数是否有无穷多个,并给出相关的证明。2素数表的构造用Eratosthenes筛法和试除法列出1000内所有的素数,比较哪种方法所用的时间比较少。它们的原理为:Eratosthenes筛法的基本原理,将自然数列从2开始按顺序排列至某一整数N,首先,从上述数列中划除所有2的倍数(不包括2),在剩下的数中,除2外最小的是3.接着,从数列中划除所有3的倍数(不包括3),然后在剩下的数中,再划去5的倍数······这个过程一直进行下去,则最后剩下的数就是不超过N的所有素数。试除法的基本原理:假设我们已经知道前n个素数p1=2,p2=3,...,pn,为找下个素数,我们从pn+2开始依次检验每一个整数N,看是否能被某一个pi(i=1,2,...,n)整除,若N能被前面的某个素数整除,则N为合数,否则N即为下一个素数pn+1。为了提高效率我们只需要用不超过N^(1/2)的素数去除就可以了.3素数的判别公式对n=2,3,…,100中不同的数,观察m^(n-1)被n整除所得的余数。将m的值固定,变化n的值为2,3,……100取m=2,观察2^(n-1)被n整除所得的余数取m=3,观察3^(n-1)被n整除所得的余数取m=4,观察4^(n-1)被n整除所得的余数………如果我们固定的是n的取值,变化m的值,那么我们得出的结果又会怎样?取n=2,m=2,3,4,……,20,观察m^(2-1)被2整除所得的余数取n=3,m=2,3,……,20,观察m^(3-1)被3整除所得的余数取n=5,m=2,3,……,20,观察m^(5-1)被5整除所得的余数得出一般性结论,。Mersenne数的素性判别:形如2^n-1的数称为Mersenne数,通过Mersenne数我们可以研究数论中的相关性质。观察并考虑Mersenne数与n的关系,得出一般性的结论,4.生成素数的公式Fermat数:我们把形如nnF22+1表示出来的数称为Fermat数。Fermat数是否都是素数?在程序中增大n的值,很容易知道当n变大到一个特定的值时,Fermat数不再是素数。既然Fermat数不能作为素数的生成公式,那么能不能寻求一个整系数单变量多项式,使得它能生出所有的素数。首先考虑一次函数,显然是不行的。再考虑二次多项式,如:f(n)=2n+n+41,f(n)=2n-79n+1061,f(n)=62n+6n+31,观察是否无论n如何变化,f(n)都是素数。若不是,再改变多项式的次数,观察得出的结果有什么不同。若单变量整系数多项式不能生成所有的素数,那么多变量整系数多项式呢?判断以上的f(n,m)是否生成的均是素数,它们之间有什么规律?5.素数的分布在上面的实验中我们已经知道了素数是无穷多个的,而且素数的生成公式并不是很明了,但是它的分布会不会具有什么样的规律呢?实验中,用)(n表示不超过n的素数的个数,),(nm表示区间[m,n]内素数的个数,再计算)100(﹑)1000(﹑)10000(以及)200,100(﹑)1100,1000(﹑)10100,10000(﹑)100100,100000(。从计算结果看,随着范围的扩大,素数是越来越稀还是越来越密?进一步,选取一些更长的区间,做同样的实验。将这些点画在图中,从图中能更清晰的看出素数的分布情况。换一个角度考虑,从两个相邻素数间距的大小同样也可以看出素数的分布,这时我们还可以发现一些更有趣的规律。先求出1000以内的所有相邻素数的间距,并将点以(np,nd)的形式画在直角坐标系中,观察图像的特点;增大n的值,再在另一个图中画出,从这些点的分布可以看出素数的间隔值的某些特征,以及它们的重复次数的多少,我们还发现:在增大N的值的同时,图中的点也会随之变高,也就是说最大间隔值在变化。6.用函数对素数的个数进行拟合用函数对素数的个数进行拟合。先进行线性拟合,选取2到1000中所有的素数进行拟合,再改变拟合的多项式的次数,比较拟合效果。将点(n,)(n)标在平面坐标系中,并且用折线把这些点连接起来,观察)(n的变化趋势,然后在程序中增大N的值,再观察)(n的变化趋势,将)(n的值与其它函数的值进行比较,看能否找出最接近)(n的值的函数,即计算素数个数的公式,注意此时n应该充分大。三.实验过程与实验结果1素数的无穷性假设已知前n个素数,它们从小到大的顺序排列为p1=2,p2=3,.……,pn,对n=1,2,……,20,计算Nn=p1p2……pn+1,问:(1)Nn是否都是素数?(2)如果Nn不是素数,Nn是否含有不同与pi(i=1,2,……,n)的素因子?Mathematic程序如下:NumP[n_Integer]:=Module[{i,Num},Num=Product[Prime[i],{i,1,n}]+1;Print[Num,,PrimeQ[Num],,FactorInteger[Num]]]Do[NumP[n],{n,1,20}]实验结果:3True{{3,1}}7True{{7,1}}31True{{31,1}}211True{{211,1}}2311True{{2311,1}}30031False{{59,1},{509,1}}510511False{{19,1},{97,1},{277,1}}9699691False{{347,1},{27953,1}}223092871False{{317,1},{703763,1}}6469693231False{{331,1},{571,1},{34231,1}}200560490131True{{200560490131,1}}7420738134811False{{181,1},{60611,1},{676421,1}}304250263527211False{{61,1},{450451,1},{11072701,1}}13082761331670031False{{167,1},{78339888213593,1}}614889782588491411False{{953,1},{46727,1},{13808181181,1}}32589158477190044731False{{73,1},{139,1},{173,1},{18564761860301,1}}1922760350154212639071False{{277,1},{3467,1},{105229,1},{19026377261,1}}117288381359406970983271False{{223,1},{525956867082542470777,1}}7858321551080267055879091False{{54730729297,1},{143581524529603,1}}557940830126698960967415391False{{1063,1},{303049,1},{598841,1},{2892214489673,1}}由此可以看出并不是所有的Nn=p1p2……pn+1都是素数,但是所得出的合数都能表示成若干个素数相乘的形式,与算术基本定理相符合。根据以上的结果我们可以得出素数是间隔着出现的,两个连续素数间间隔的合数个数也是不确定的,我们就有这样的疑问:素数的个数是否是无穷的?当n=20,21,..25,程序与结果如下:NumP[n_Integer]:=Module[{i,Num},Num=Proct[Prime[i],{i,1,n}]+1;Print[n,,Num,,PrimeQ[Num],,FactorInteger[Num]]]Do[NumP[n],{n,20,25}]20557940830126698960967415391False{{1063,1},{303049,1},{598841,1},{2892214489673,1}}2140729680599249024150621323471False{{2521,1},{16156160491570418147806951,1}}223217644767340672907899084554131False{{22093,1},{1503181961,1},{96888414202798247,1}}23267064515689275851355624017992791False{{265739,1},{1004988035964897329167431269,1}}2423768741896345550770650537601358311False{{131,1},{1039,1},{2719,1},{64225891884294373371806141,1}}252305567963945518424753102147331756071False{{2336993,1},{13848803,1},{71237436024091007473549,1}}当n=25,..30,输出结果为:252305567963945518424753102147331756071False{{2336993,1},{13848803,1},{71237436024091007473549,1}}26232862364358497360900063316880507363071False{{960703,1},{242387464553038099079594127301057,1}}2723984823528925228172706521638692258396211False{{2297,1},{9700398839,1},{179365737007,1},{6001315443334531,1}}282566376117594999414479597815340071648394471False{{149,1},{13203797,1},{30501264491063137,1},{42767843651083711,1}}29279734996817854936178276161872067809674997231False{{334507,1},{1290433,1},{648046444234299714623177554034701,1}}3031610054640417607788145206291543662493274686991False{{5122427,1},{2025436786007,1},{3046707595069540247157055819,1}}根据上面的结果,很容易看出,虽然n不全是素数,但分解出的素因子在不断变大。由此,我们可假设命题:素数的个数是无穷多个的。证明:反证法,若素数的个数是有限的,且最大的素数是pk。令N=p1p2......pk+1,Npk,则N是合数,根据算术基本定理,N存在素因子p,则可得出p\p1p2......pk,且p\Np\1,这与p是素数相矛盾。故而假设不成立。得证:素数的个数是无穷多个的。2.Era
本文标题:素数-实验报告.
链接地址:https://www.777doc.com/doc-5964307 .html