「质数的和与积java」质数的和与积算法
今天给各位分享质数的和与积java的知识,其中也会对质数的和与积算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
小学学了的知识忘了:什么是素数?
质数(又称为素数)
1.就是在所有比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数。还可以说成质数只有1和它本身两个约数。2.素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任 何其它两个整数的乘积。例如,15=3*5,所以15不是素数;
又如,12 =6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以 外,不能表示为其它任何两个整数的乘积,所以13是一个素数。
[编辑本段]质数的概念
一个数,如果只有1和它本身两个因数,这样的数叫做质数(或素数)。例如 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数或合数。从这个观点可将整数分为两种,一种叫质数,一种叫合成数。(1不是质数,也不是合数)著名的高斯「唯一分解定理」说,任何一个整数。可以写成一串质数相乘的积。质数中除2是偶数外,其他都是奇数。
[编辑本段]质数的奥秘
质数的分布是没有规律的,往往让人莫名其妙。如:101、401、601、701都是质数,但上下面的301(7*43)和901(17*53)却是合数。
有人做过这样的验算:1^2+1+41=43,2^2+2+41=47,3^2+3+41=53……于是就可以有这样一个公式:设一正数为n,则n^2+n+41的值一定是一个质数。这个式子一直到n=39时,都是成立的。但n=40时,其式子就不成立了,因为40^2+40+41=1681=41*41。
说起质数就少不了哥德巴赫猜想,和著名的“1+1”
哥德巴赫猜想 :(Goldbach Conjecture)
内容为“所有的不小于6的偶数,都可以表示为两个素数”
这个问题是德国数学家哥德巴赫(C.Goldbach,1690-1764)于1742年6月7日在给大数学家欧拉的信中提出的,所以被称作哥德巴赫猜想。同年6月30日,欧拉在回信中认为这个猜想可能是真的,但他无法证明。从此,这道数学难题引起了几乎所有数学家的注意。哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的“明珠”。“用当代语言来叙述,哥德巴赫猜想有两个内容,第一部分叫做奇数的猜想,第二部分叫做偶数的猜想。奇数的猜想指出,任何一个大于等于7的奇数都是三个素数的和。偶数的猜想是说,大于等于4的偶数一定是两个素数的和。”(引自《哥德巴赫猜想与潘承洞》)
哥德巴赫猜想貌似简单,要证明它却着实不易,成为数学中一个著名的难题。18、19世纪,所有的数论专家对这个猜想的证明都没有作出实质性的推进,直到20世纪才有所突破。直接证明哥德巴赫猜想不行,人们采取了“迂回战术”,就是先考虑把偶数表为两数之和,而每一个数又是若干素数之积。如果把命题"每一个大偶数可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b",那么哥氏猜想就是要证明"1+1"成立。
1900年,20世纪最伟大的数学家希尔伯特,在国际数学会议上把“哥德巴赫猜想”列为23个数学难题之一。此后,20世纪的数学家们在世界范围内“联手”进攻“哥德巴赫猜想”堡垒,终于取得了辉煌的成果。
到了20世纪20年代,有人开始向它靠近。1920年,挪威数学家布爵用一种古老的筛选法证明,得出了一个结论:每一个比6大的偶数都可以表示为(9+9)。这种缩小包围圈的办法很管用,科学家们于是从(9十9)开始,逐步减少每个数里所含质数因子的个数,直到最后使每个数里都是一个质数为止,这样就证明了“哥德巴赫猜想”。
1920年,挪威的布朗(Brun)证明了 “9+9 ”。
1924年,德国的拉特马赫(Rademacher)证明了“7+7 ”。
1932年,英国的埃斯特曼(Estermann)证明了 “6+6 ”。
1937年,意大利的蕾西(Ricei)先后证明了“5+7 ”, “4+9 ”, “3+15 ”和“2+366 ”。
1938年,苏联的布赫 夕太勃(Byxwrao)证明了“5+5 ”。
1940年,苏联的布赫 夕太勃(Byxwrao)证明了 “4+4 ”。
1948年,匈牙利的瑞尼(Renyi)证明了“1+c ”,其中c是一很大的自然数。
1956年,中国的王元证明了 “3+4 ”。
1957年,中国的王元先后证明了 “3+3 ”和 “2+3 ”。
1962年,中国的潘承洞和苏联的巴尔巴恩(BapoaH)证明了 “1+5 ”, 中国的王元证明了“1+4 ”。
1965年,苏联的布赫 夕太勃(Byxwrao)和小维诺格拉多夫(BHHopappB),及 意大利的朋比利(Bombieri)证明了“1+3 ”。
1966年,中国的陈景润证明了 “1+2 ”[用通俗的话说,就是大偶数=素数+素数*素数或大偶数=素数+素数(注:组成大偶数的素数不可能是偶素数,只能是奇素数。因为在素数中只有一个偶素数,那就是2。)]。
其中“s + t ”问题是指: s个质数的乘积 与t个质数的乘积之和
20世纪的数学家们研究哥德巴赫猜想所采用的主要方法,是筛法、圆法、密率法和三角和法等等高深的数学方法。解决这个猜想的思路,就像“缩小包围圈”一样,逐步逼近最后的结果。
由于陈景润的贡献,人类距离哥德巴赫猜想的最后结果“1+1”仅有一步之遥了。但为了实现这最后的一步,也许还要历经一个漫长的探索过程。有许多数学家认为,要想证明“1+1”,必须通过创造新的数学方法,以往的路很可能都是走不通的。实际上:
一陈景润证明的不是哥德巴赫猜想
陈景润与邵品宗合著的【哥德巴赫猜想】第118页(辽宁教育出版社)写道:陈景润定理的“1+1”结果,通俗地讲是指:对于任何一个大偶数N,那么总可以找到奇素数P',P",或者P1,P2,P3,使得下列两式至少一式成立:“
N=P'+P" (A)
N=P1+P2*P3 (B)
当然并不排除(A)(B)同时成立的情形,例如62=43+19,62=7+5X11。”
众所周知,哥德巴赫猜想是指对于大于4的偶数(A)式成立,【1+2】是指对于大于10的偶数(B)式成立,
两者是不同的两个命题,陈景润把两个毫不相关的命题混为一谈,并在申报奖项时偷换了概念(命题),陈景润也没有证明【1+2】,因为【1+2】比【1+1】难得多。
二。 陈景润使用了错误的推理形式
陈采用的是相容选言推理的“肯定肯定式”:或者A,或者B,A,所以或者A或B,或A与B同时成立。 这是一种错误的推理形式,模棱两可,牵强附会,言之无物,什么也没有肯定,正如算命先生那样“:李大嫂分娩,或者生男孩,或者生女孩,或者同时生男又生女(多胎)”。无论如何都是对的,这种判断在认识论上称为不可证伪,而可证伪性是科学与伪科学的分界。相容选言推理只有一种正确形式。否定肯定式:或者A,或者B,非A,所以B。相容选言推理有两条规则:1,否认一部分选言肢,就必须肯定另一部分选言肢;2,肯定一部分选言肢却不能否定另一部份选言肢。可见对陈景润的认可表明中国数学会思维混乱,缺乏基本的逻辑训练。
三。 陈景润大量使用错误概念
陈在论文中大量使用“充分大”和“殆素数”这两个含糊不清的概念。而科学概念的特征就是:精确性,专义性,稳定性,系统性,可检验性。“殆素数”指很像素数,拿像与不像来论证,这是小孩的游戏。而“充分大”,陈指10的50万次方,这是不可检验的数。
四。陈景润的结论不能算定理
陈的结论采用的是特称(某些,一些),即某些N是(A),某些N是(B),就不能算定理,因为所有严格的科学的定理,定律都是以全称(所有,一切,全部,每个)命题形式表现出来,一个全称命题陈述一个给定类的所有元素之间的一种不变关系,适用于一种无穷大的类,它在任何时候都无区别的成立。而陈景润的结论,连概念都算不上。
五。陈景润的工作严重违背认识规律
在没有找到素数普篇公式之前,哥氏猜想是无法解决的,正如化圆为方取决于圆周率的超越性是否搞清,事物质的规定性决定量的规定性。(王晓明1999年《中华传奇》第三期“哥德巴赫猜想传奇)
英文的
prime number: a number that haas exact 2 foctor
[编辑本段]质数的性质
被称为“17世纪最伟大的法国数学家”费尔马,也研究过质数的性质。他发现,设Fn=2^(2^n)+1,则当n分别等于0、1、2、3、4时,Fn分别给出3、5、17、257、65537,都是质数,由于F5太大(F5=4294967297),他没有再往下检测就直接猜测:对于一切自然数,Fn都是质数。但是,就是在F5上出了问题!费尔马死后67年,25岁的瑞士数学家欧拉证明:F5=4294967297=641*6700417,并非质数,而是合数。
更加有趣的是,以后的Fn值,数学家再也没有找到哪个Fn值是质数,全部都是合数。目前由于平方开得较大,因而能够证明的也很少。现在数学家们取得Fn的最大值为:n=1495。这可是个超级天文数字,其位数多达10^10584位,当然它尽管非常之大,但也不是个质数。质数和费尔马开了个大玩笑!
还有一种被称为“殆素数”的,意思是很像素数,著名数学家陈景润就使用了这个概念,他的“1+2”的“2”,就表示“殆素数”,实际上是一个合数。大家不要搞混了。严格地讲,“殆素数”不是一个科学概念,因为科学概念的特征是(1)精确性;(2)稳定性;(3)可以检验;(4)系统性;(5)专义性。例如,许多数学家使用了“充分大”,这也是一个模糊概念,因为陈景润把它定义为“10的50万次方”,即在10的后面加上50万个“0”。这是一个无法检验的数。
[编辑本段]质数的假设
17世纪还有位法国数学家叫梅森,他曾经做过一个猜想:2^p-1代数式,当p是质数时,2^p-1是质数。他验算出了:当p=2、3、5、7、17、19时,所得代数式的值都是质数,后来,欧拉证明p=31时,2^p-1是质数。 p=2,3,5,7时,Mp都是素数,但M11=2047=23×89不是素数。
还剩下p=67、127、257三个梅森数,由于太大,长期没有人去验证。梅森去世250年后,美国数学家科勒证明,2^67-1=193707721*761838257287,是一个合数。这是第九个梅森数。20世纪,人们先后证明:第10个梅森数是质数,第11个梅森数是合数。质数排列得这样杂乱无章,也给人们寻找质数规律造成了困难。
[编辑本段]质数表上的质数
现在,数学家找到的最大的梅森数是一个有9808357位的数:2^32582657-1。数学虽然可以找到很大的质数,但质数的规律还是无法循通。
30000以内的质数表
[编辑本段]【求大质数的方法】
研究发现质数除2以外都是奇数,而奇数除了【奇数*奇数】(或再加“*奇数”)都是质数。那么用计算机先把【奇数*奇数】(或再加“*奇数”)(比如9,15,21,25,27,33,35,39……)都求出来,再找奇数中上面没提到的那些数,那些数就是素数。
人们找出的几个超大质数中有遗漏,那么就可以用此方法求出那些遗漏的数,不过需要很长时间!
这对于“孪生素数”有帮助喔!
上面这个算法比较垃圾,对于求很大的素数效率低下,这个很大的素数可以用概率算法求。
求素数,请用《公理与素数计算》。这种方法用不着将所有奇数都写出来,而且计算出来的素数可以做到一个不漏。对于合数的删除,也不是涉及所有奇合数,删除是准确无误的,删除奇合数后剩余的全部是素数。如:对奇素数3的倍数的数进行删除,在整个自然数中只须删除一个数;对素数5的倍数的数进行删除,在整个自然数中只须删除2个数;对素数7的倍数的数进行删除,在整个自然数中只须删除8个数;以此类推,如果哪位老师能够将它用电脑编成程序,对计算素数有很大的帮助。
[编辑本段]【质数的个数】
有近似公式: x 以内质数个数约等于 x / ln(x)
ln是自然对数的意思。
尚准确的质数公式未给出。
10 以内共 4 个质数。
100 以内共 25 个质数。
1000 以内共 168 个质数。
10000 以内共 1229 个质数。
100000 以内共 9592 个质数。
1000000 以内共 78498 个质数。
10000000 以内共 664579 个质数。
100000000 以内共 5761455 个质数。
......
[编辑本段]【求质数的方法】
古老的筛法可快速求出100000000以内的所有素数。
筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。)
}
本机测试结果:10000000用时1156ms(1.156秒)
100000000用时80秒(较慢,主要是内存太少,反复读硬盘的原因)
[编辑本段]【判定质数的方法】
1 朴素筛法,就是直接试除
2 若a是n的因子,那么n/a也是n的因子,所以如果n有一个大于1的真因子,则必有一个不大于n的1/2次方的因子
3 进一步的,如n是合数,他必有一个素因子不大于n的1/2次方,如要检测一个m以内的数是否为素数需事先建立一个m的1/2次方以内素数表。
4 Miller-Rabbin算法
5 概率算法
6 无条件的素数测试(包含APR算法 Jacobi sum测试 等)
7.n的n次幂除以n,若余数为2,则n为质数
......
效率比较:
效率比较一般的有 Eraosthenes氏筛选法
效率较高的有
Jacobbi Sums测试
更好的有
Miller-Rabbin算法(Monte-Carlo系列的算法)
不过这个是概率算法,依赖于 ERH(extend Riemann Hypothesis)
现在使用的素数判定算法还有
Unconditional Primality Test(基于Algebraic Number Theory)
近15年来还有椭圆曲线算法,
APR, Random Curve, Abelian Variety测试
[编辑本段]【素数的生成】
根据素数定理,素数平均分布稠密程度π(x)/x≈1/lnx,对于512位大整数,随机产生为素数概率约为1/355,继而我们对每个随机数利用Miller-Rabbin测试,不断选取基b,计算是否每次都有bn-1 mod n=1都成立,则n几乎肯定是素数。由于多次运行后出错概率非常小,在实际中是可以信赖的。在Java里,BigInteger类提供的isProbablePrime()函数帮助简化了测试操作。
代码仅供参考,属于概率型,不保证求出的都是质数。
素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3×5,所以15不是素数;又如,12=6×2=4×3,所以12也不是素数。另一方面,13除了等于13×1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。
有的数,如果单凭印象去捉摸,是无法确定它到底是不是素数的。有些数则可以马上说出它不是素数。一个数,不管它有多大,只要它的个位数是2、4、5、6、8或0,就不可能是素数。此外,一个数的各位数字之和要是可以被3整除的话,它也不可能是素数。但如果它的个位数是1、3、7或9,而且它的各位数字之和不能被3整除,那么,它就可能是素数(但也可能不是素数)。没有任何现成的公式可以告诉你一个数到底是不是素数。你只能试试看能不能将这个数表示为两个比它小的数的乘积。
找素数的一种方法是从2开始用“是则留下,不是则去掉”的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000)。
第一个数是2,它是一个素数,所以应当把它留下来,然后继续往下数,每隔一个数删去一个数,这样就能把所有能被2整除、因而不是素数的数都去掉。在留
下的最小的数当中,排在2后面的是3,这是第二个素数,因此应该把它留下,然后从它开始往后数,每隔两个数删去一个,这样就能把所有能被3整除的数全
都去掉。下一个未去掉的数是5,然后往后每隔4个数删去一个,以除去所有能被5整除的数。再下一个数是7,往后每隔6个数删去一个;再下一个数是11
,往后每隔10个数删一个;再下一个是13,往后每隔12个数删一个。……就这样依法做下去。
你也许会认为,照这样删下去,随着删去的数越来越多,最后将会出现这样的情况;某一个数后面的数会统统被删去崮此在某一个最大的素数后面,再也不
会有素数了。但是实际上,这样的情况是不会出现的。不管你取的数是多大,百万也好,万万也好,总还会有没有被删去的、比它大的素数。
事实上,早在公元前300年,希腊数学家欧几里得就已证明过,不论你取的数是多大,肯定还会有比它大的素数,假设你取出前6个素数,并把它们乘在
一起:2×3×5×7×11×13=30030,然后再加上1,得30031。这个数不能被2、3、5、7、11、13整除,因为除的结果,每次都会余1。如果30031除了自己以外不能被任何数整除,它就是素数。如果能被其它数整除,那么30031所分解成的几个数,一定都大于13。事实上,3
0031=59×509。
对于前一百个、前一亿个或前任意多个素数,都可以这样做。如果算出了它们的乘积后再加上1,那么,所得的数或者是一个素数,或者是比所列出的素数还要大的几个素数的乘积。不论所取的数有多大,总有比它大的素数,因此,素数的数目是无限的。
随着数的增大,我们会一次又一次地遇到两个都是素数的相邻奇数对,如5,7;11,13;17,19;29,31;41,43;等等。就数学家所能及的数来说,它们总是能找到这样的素数对。这样的素数对到底是不是有无限
个呢?谁也不知道。数学家认为是无限的,但他们从来没能证明它。这就是数学家为什么对素数感兴趣的原因。素数为数学家提供了一些看起来很容易、但事实
却非常难以解决的问题,他们目前还没能对付
C语言分解质因数
#include stdio.h
int main(){
int n; // 用户输入的整数
int i; // 循环标志
printf("输入一个整数:");
scanf("%d",n);
printf("%d=",n);
// n=2才执行下面的循环
for(i=2; i=n; i++){
while(n!=i){
if(n%i==0){
printf("%d*",i);
n=n/i;
}else
break;
}
}
printf("%d\n",n);
return 0;
}
将一个正整数分解质因数。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
1、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
2、如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
3、如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。
C语言
C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年 由 肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、Java、C#等。
质数合数什么的老是混,高人帮我总结下
质数(又称为素数)
1.只有1和它本身这两个因数的自然数叫做质数。还可以说成质数只有1和它本身两个约数。2.素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任 何其它两个整数的乘积。例如,15=3×5,所以15不是素数;
又如,12 =6×2=4×3,所以12也不是素数。另一方面,13除了等于13×1以 外,不能表示为其它任何两个整数的乘积,所以13是一个素数。
[编辑本段]质数的概念
一个数,如果只有1和它本身两个因数,这样的数叫做质数,又称素数。例如(10以内) 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数或合数。特别声明一点,1既不是质数也不是合数。为什么1不是质数呢?因为如果把1也算作质数的话,那么在分解质因数时,就可以随便添上几个1了。比如30,分解质因数是2*3*5,因为分解质因数是要把一个数写成质数的连乘积,如果把1算作质数的话,那么在这个算式中,就可以随便添上几个1了,分解质因数也就没法分解了。从这个观点可将整数分为两种,一种叫质数,一种叫合成数。(1不是质数,也不是合数)著名的高斯「唯一分解定理」说,任何一个整数。可以写成一串质数相乘的积。质数中除2是偶数外,其他都是奇数。2000年前,欧几里德证明了素数有无穷多个。既然有无穷个,那么是否有一个通项公式?两千年来,数论学的一个重要任务,就是寻找一个可以表示全体素数的素数普遍公式和孪生素数普遍公式,为此,人类耗费了巨大的心血。希尔伯特认为,如果有了素数统一的素数普遍公式,那么这些哥德巴赫猜想和孪生素数猜想都可以得到解决。
[编辑本段]质数的奥秘
质数的分布是没有规律的,往往让人莫名其妙。如:101、401、601、701都是质数,但上下面的301(7*43)和901(17*53)却是合数。
有人做过这样的验算:1^2+1+41=43,2^2+2+41=47,3^2+3+41=53……于是就可以有这样一个公式:设一正数为n,则n^2+n+41的值一定是一个质数。这个式子一直到n=39时,都是成立的。但n=40时,其式子就不成立了,因为40^2+40+41=1681=41×41。
说起质数就少不了哥德巴赫猜想,即著名的“1+1”。哥德巴赫猜想 :(Goldbach Conjecture)
内容为“所有的不小于6的偶数,都可以表示为两个奇素数之和”和“每个不小于9的奇数都可以表示为三个奇素数之和”。
这个问题是德国数学家哥德巴赫(C.Goldbach,1690-1764)于1742年6月7日在给大数学家欧拉的信中提出的,所以被称作哥德巴赫猜想。同年6月30日,欧拉在回信中认为这个猜想可能是真的,但他无法证明。从此,这道数学难题引起了几乎所有数学家的注意。哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的“明珠”。“用当代语言来叙述,哥德巴赫猜想有两个内容,第一部分叫做奇数的猜想,第二部分叫做偶数的猜想。奇数的猜想指出,任何一个大于等于7的奇数都是三个素数的和。偶数的猜想是说,大于等于4的偶数一定是两个素数的和。”(引自《哥德巴赫猜想与潘承洞》)
哥德巴赫猜想貌似简单,要证明它却着实不易,成为数学中一个著名的难题。18、19世纪,所有的数论专家对这个猜想的证明都没有作出实质性的推进,直到20世纪才有所突破。直接证明哥德巴赫猜想不行,人们采取了“迂回战术”,就是先考虑把偶数表为两数之和,而每一个数又是若干素数之积,被称为“殆素数”意思是很像素数。如果把命题"每一个大偶数可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b",那么哥氏猜想就是要证明"1+1"成立,充分大的偶数陈景润是指10的5000000次方,即在10的后面加上500000个“0”。
1900年,20世纪最伟大的数学家希尔伯特,在国际数学会议上把“哥德巴赫猜想”列为23个数学难题之一。此后,20世纪的数学家们在世界范围内“联手”进攻“哥德巴赫猜想”堡垒,终于取得了辉煌的成果。
到了20世纪20年代,有人开始向它靠近。1920年,挪威数学家布爵用一种古老的筛选法证明,得出了一个结论:每一个比6大的偶数都可以表示为(9+9)。这种缩小包围圈的办法很管用,科学家们于是从(9十9)开始,逐步减少每个数里所含质数因子的个数,直到最后使每个数里都是一个质数为止,这样就证明了“哥德巴赫猜想”。
1920年,挪威的布朗(Brun)证明了 “9+9 ”。
1924年,德国的拉特马赫(Rademacher)证明了“7+7 ”。
1932年,英国的埃斯特曼(Estermann)证明了 “6+6 ”。
1937年,意大利的蕾西(Ricei)先后证明了“5+7 ”, “4+9 ”, “3+15 ”和“2+366 ”。
1938年,苏联的布赫 夕太勃(Byxwrao)证明了“5+5 ”。
1940年,苏联的布赫 夕太勃(Byxwrao)证明了 “4+4 ”。
1948年,匈牙利的瑞尼(Renyi)证明了“1+c ”,其中c是一很大的自然数。
1956年,中国的王元证明了 “3+4 ”。
1957年,中国的王元先后证明了 “3+3 ”和 “2+3 ”。
1962年,中国的潘承洞和苏联的巴尔巴恩(BapoaH)证明了 “1+5 ”, 中国的王元证明了“1+4 ”。
1965年,苏联的布赫 夕太勃(Byxwrao)和小维诺格拉多夫(BHHopappB),及 意大利的朋比利(Bombieri)证明了“1+3 ”。
1966年,中国的陈景润证明了 “1+2 ”[用通俗的话说,就是大偶数=素数+素数*素数或大偶数=素数+素数(注:组成大偶数的素数不可能是偶素数,只能是奇素数。因为在素数中只有一个偶素数,那就是2。)]。
其中“s + t ”问题是指: s个质数的乘积 与t个质数的乘积之和
20世纪的数学家们研究哥德巴赫猜想所采用的主要方法,是筛法、圆法、密率法和三角和法等等高深的数学方法。解决这个猜想的思路,就像“缩小包围圈”一样,逐步逼近最后的结果。保罗,赫夫曼在《阿基米德的报复》35页写道:殆素数和充分大是含糊不清的概念。
人们发现,如果去掉殆素数,(1+2)比(1+1)困难的多。(1+3)比(1+2)困难的多。
(1+1)是大于第一个素数“2”的1次方加1的偶数(即n2+1)都是一个素数加上一个素数之和。
(1+2)是大于第二个素数“3”的2次方加1的偶数(即n〉3x3+1=10)都是一个素数加上二个素数乘积之和。例如12=3×3+3。
(1+3)是大于第三个素数“5”的3次方加1的偶数(即n〉5x5x5+1=126)都是一个素数加上三个素数乘积之和。例如128=5x5x5+3=5x5x3+53。小于128的偶数有21个不能够表示为(1+3),例如,4,6,8,10,12,14,16,18,20,22,24,26,28,36,42,54,72,96,114,120,126。
(1+4)是大于第四个素数“7”的4次方加1的偶数(即n〉7x7x7x7+1=2402)都是一个素数加上四个素数乘积之和。例如2404=2401+3。小于2044的偶数有几百个不能够表示(1+4)。
这是因为自然数数值越小,含素数个数多的合数越少。例如,100以内,有25个素数,有含2个素数因子的奇合数18个,含3个素数因子的合数有5个(27,45,63,75,99),含4个素数因子的合数仅1个(81)。实际上,哥德巴赫猜想只是这一类问题中难度最底端的问题。许多艰难的问题正等待人们去克服。
由于陈景润的贡献,人类距离哥德巴赫猜想的最后结果“1+1”仅有一步之遥了。但为了实现这最后的一步,也许还要历经一个漫长的探索过程。有许多数学家认为,要想证明“1+1”,必须通过创造新的数学方法,以往的路很可能都是走不通的。
编辑者:郭威
[编辑本段]“质数”——Prime Number的几种英文解释
1.In mathematics, a prime number (or prime) is a natural number greater than one whose only positive divisors are one and itself. Or for short: A prime number is a natural number with exactly two natural divisors. A natural number that is greater than one and is not a prime is called a composite number. The numbers zero and one are neither prime nor composite. The property of being a prime is called primality. Prime numbers are of fundamental importance in number theory. [From Wikipedia]
2.A whole number not divisible without a remainder by any whole number other than itself and one.(汉译:素数,质数:只能被其本身和一整除而没有余数的整数)[From American Heritage Dictionary]
3.any integer other than 0 or ± 1 that is not divisible without remainder by any other integers except ± 1 and ± the integer itself. [From The Merriam-Webster's Collegiate® Dictionary]
4.a number that can be divided only by itself and the number one. For example, three and seven are prime numbers.[From Longman Dictionary of Contemporary English]
[编辑本段]质数的性质
被称为“17世纪最伟大的法国数学家”费尔马,也研究过质数的性质。他发现,设Fn=2^(2^n)+1,则当n分别等于0、1、2、3、4时,Fn分别给出3、5、17、257、65537,都是质数,由于F5太大(F5=4294967297),他没有再往下检测就直接猜测:对于一切自然数,Fn都是质数。但是,就是在F5上出了问题!费尔马死后67年,25岁的瑞士数学家欧拉证明:F5=4294967297=641*6700417,并非质数,而是合数。
更加有趣的是,以后的Fn值,数学家再也没有找到哪个Fn值是质数,全部都是合数。目前由于平方开得较大,因而能够证明的也很少。现在数学家们取得Fn的最大值为:n=1495。这可是个超级天文数字,其位数多达10^10584位,当然它尽管非常之大,但也不是个质数。质数和费尔马开了个大玩笑!
还有一种被称为“殆素数”的,意思是很像素数,著名数学家陈景润就使用了这个概念,他的“1+2”的“2”,就表示“殆素数”,实际上是一个合数。大家不要搞混了。严格地讲,“殆素数”不是一个科学概念,因为科学概念的特征是(1)精确性;(2)稳定性;(3)可以检验;(4)系统性;(5)专义性。例如,许多数学家使用了“充分大”,这也是一个模糊概念,因为陈景润把它定义为“10的50万次方”,即在1的后面加上50万个“0”。这是一个无法检验的数。
[编辑本段]质数的假设
17世纪还有位法国数学家叫梅森,他曾经做过一个猜想:2^p-1代数式,当p是质数时,2^p-1是质数。他验算出了:当p=2、3、5、7、11、13、17、19时,所得代数式的值都是质数,后来,欧拉证明p=31时,2^p-1是质数。 p=2,3,5,7时,Mp都是素数,但M11=2047=23×89不是素数。
还剩下p=67、127、257三个梅森数,由于太大,长期没有人去验证。梅森去世250年后,美国数学家科勒证明,2^67-1=193707721*761838257287,是一个合数。这是第九个梅森数。20世纪,人们先后证明:第10个梅森数是质数,第11个梅森数是合数。质数排列得这样杂乱无章,也给人们寻找质数规律造成了困难。
[编辑本段]质数表上的质数
现在,数学家找到的最大的梅森数是一个有12978189位的数:2^43112609-1。数学虽然可以找到很大的质数,但质数的规律还是无法循通。
[编辑本段]【求大质数的方法】
研究发现质数除2以外都是奇数,而奇数除了【奇数*奇数】(或再加“*奇数”)都是质数。那么用计算机先把【奇数*奇数】(或再加“*奇数”)(比如9,15,21,25,27,33,35,39……)都求出来,再找奇数中上面没提到的那些数,那些数就是素数。
人们找出的几个超大质数中有遗漏,那么就可以用此方法求出那些遗漏的数,不过需要很长时间!
这对于“孪生素数”有帮助喔!
上面这个算法比较麻烦,对于求很大的素数效率低下,这个很大的素数可以用概率算法求。
求素数,请用《公理与素数计算》。这种方法用不着将所有奇数都写出来,而且计算出来的素数可以做到一个不漏。对于合数的删除,也不是涉及所有奇合数,删除是准确无误的,删除奇合数后剩余的全部是素数。如:对奇素数3的倍数的数进行删除,在整个自然数中只须删除一个数;对素数5的倍数的数进行删除,在整个自然数中只须删除2个数;对素数7的倍数的数进行删除,在整个自然数中只须删除8个数;以此类推,如果哪位老师能够将它用电脑编成程序,对计算素数有很大的帮助。
[编辑本段]【质数的个数】
有近似公式: x 以内质数个数约等于 x / ln(x)
ln是自然对数的意思。
19世纪,人们证明了:"在x与2x,(x∈R.)之间一定存在质数以及 "kx+b ,(x,k,b∈R.)中存在无穷多的质数" 但另一个猜想x^2与(x+1)^2,(x∈R.)之间一定存在质数,仍未被证明。
尚准确的质数公式未给出。
10 以内共 4 个质数。
100 以内共 25 个质数。
1000 以内共 168 个质数。
10000 以内共 1229 个质数。
100000 以内共 9592 个质数。
1000000 以内共 78498 个质数。
10000000 以内共 664579 个质数。
100000000 以内共 5761455 个质数。
......
总数无限。
[编辑本段]【求质数的方法】
古老的筛法可快速求出100000000以内的所有素数(质数)。
筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。)
程序
#includestdio.h
#includetime.h
#define MAX 100000010
int n,p[MAX],tot=0;
double s,t;
FILE *fp;
void prime()
{ int i,j,t=sqrt(n)+1;
for(i=2;it;i++)
if(p[i])
{ fprintf(fp,"%d\n",i);
tot++;
j=i+i;
while(jn)
{ p[j]=0;
j+=i;
}
}
for(i=t+1;in;i++)
if(p[i])
{ tot++;
fprintf(fp,"%d\n",i);
}
}
main()
{ int i;
fp=fopen("prime.txt","w");
scanf("%d",n);
s=clock();
for(i=0;in;i++)
p[i]=1;
prime();
t=clock();
fprintf(fp,"Num = %d\nTime = %.0lf ms\n",tot,t-s);
fclose(fp);
}
本机测试结果:10000000用时1156ms(1.156秒)
100000000用时80秒(较慢,主要是内存太少,反复读硬盘的原因)
//用JAVA程序求出1到10000之间的质数
public class Prime_Number{
public static void main(String []args){
System.out.println("1到10000以内的质数有:");
//因为1既不是质数也不是合数,所以从2开始判定
for(int i=2; i10000; i++){
boolean f=true;
for(int j=2; ji; j++){
if(i%j == 0){
f=false;
break;
}
}
if(!f){
continue;
}
System.out.print(i+"\t");
}
}
}
[编辑本段]【判定质数的方法】
1 朴素筛法,就是直接试除
2 若a是n的因子,那么n/a也是n的因子,所以如果n有一个大于1的真因子,则必有一个不大于n的1/2次方的因子
3 进一步的,如n是合数,他必有一个素因子不大于n的1/2次方,如要检测一个m以内的数是否为素数需事先建立一个m的1/2次方以内素数表。
4 Miller-Rabbin算法
5 概率算法
6 无条件的素数测试(包含APR算法 Jacobi sum测试 等)
......
效率比较:
效率比较一般的有 Eraosthenes氏筛选法
效率较高的有
Jacobbi Sums测试
更好的有
Miller-Rabbin算法(Monte-Carlo系列的算法)
不过这个是概率算法,依赖于 ERH(extend Riemann Hypothesis)
现在使用的素数判定算法还有
Unconditional Primality Test(基于Algebraic Number Theory)
近15年来还有椭圆曲线算法,
APR, Random Curve, Abelian Variety测试
关于编程语言中对素数判断的说明及证明
即只需用2到根号N之间的所有整数去除N就可以证明N是否为素数):
证明:假设
N
从2到根号N都没有它的因数
而他有一个因数是m并且是大于根号N
很显然有:N/m = n(一个整数),由于m根号N,n根号N
这说明N从2到根号N有它的因数
与假设相反
找素数的一种方法是从2开始用“是则留下,不是则去掉”的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000)。
第一个数是2,它是一个素数,所以应当把它留下来,然后继续往下数,每隔一个数删去一个数,这样就能把所有能被2整除、因而不是素数的数都去掉。在留
下的最小的数当中,排在2后面的是3,这是第二个素数,因此应该把它留下,然后从它开始往后数,每隔两个数删去一个,这样就能把所有能被3整除的数全
都去掉。下一个未去掉的数是5,然后往后每隔4个数删去一个,以除去所有能被5整除的数。再下一个数是7,往后每隔6个数删去一个;再下一个数是11
,往后每隔10个数删一个;再下一个是13,往后每隔12个数删一个。……就这样依法做下去。
你也许会认为,照这样删下去,随着删去的数越来越多,最后将会出现这样的情况;某一个数后面的数会统统被删去崮此在某一个最大的素数后面,再也不
会有素数了。但是实际上,这样的情况是不会出现的。不管你取的数是多大,百万也好,万万也好,总还会有没有被删去的、比它大的素数。
事实上,早在公元前300年,希腊数学家欧几里得就已证明过,不论你取的数是多大,肯定还会有比它大的素数,假设你取出前6个素数,并把它们乘在
一起:2×3×5×7×11×13=30030,然后再加上1,得30031。这个数不能被2、3、5、7、11、13整除,因为除的结果,每次都会余1。如果30031除了自己以外不能被任何数整除,它就是素数。如果能被其它数整除,那么30031所分解成的几个数,一定都大于13。事实上, 30031=59×509。
对于前一百个、前一亿个或前任意多个素数,都可以这样做。如果算出了它们的乘积后再加上1,那么,所得的数或者是一个素数,或者是比所列出的素数还要大的几个素数的乘积。不论所取的数有多大,总有比它大的素数,因此,素数的数目是无限的。
随着数的增大,我们会一次又一次地遇到两个都是素数的相邻奇数对,如5,7;11,13;17,19;29,31;41,43;等等。就数学家所能及的数来说,它们总是能找到这样的素数对。这样的素数对到底是不是有无限
个呢?谁也不知道。数学家认为是无限的,但他们从来没能证明它。这就是数学家为什么对素数感兴趣的原因。素数为数学家提供了一些看起来很容易、但事实
却非常难以解决的问题,他们目前还没能对付这个挑战哩。
【素数的程序】
for i=1 to 100
for j=2 to i
if j=i
?i
endif
if mod(i,j)=0
EXIT
endif
endfor
endfor
合数是整数中除了1和它本身还能被其他的整数整除的整数.
除0,2之外的偶数都是合数
合数又名合成数,是满足以下任一(等价)条件的正整数:
1.是两个大于1 的整数之乘积;
2.拥有某大于1 而小于自身的因数(因子);
3.拥有至少三个因数(因子);
4.不是1 也不是素数(质数);
5.有至少一个素因子的非素数.
[编辑本段]特殊合数的结论
一个合数有奇数个因数(因子)当且仅当它是完全平方数.。
1.只有1和它本身,没有其他的因数叫质数(又叫素数)。(如:2÷1=2,2÷2=1,所以2的因数只有1和它本身2这两个因数,2就是素数).。
2.除了1和它本身,还有其它因数的数,叫做合数。(如:4÷1=4,4÷2=2,4÷4=1,很显然,4的因数除了1和它本身4这两个因数以外,还有因数2,所以4是合数)。
3.1既不是素数也不是合数,因为它的因数有且只有1这一个因数.。
4,合数就是有两个因数以上的数。
5.在100以内,能被2、3、5、7中的一个或多个整除的数是合数,但不包括2、3、5、7自身。
6.形如ab+x的数一定是合数(b是自然数,(a,x)≠1。
我有疑义:第6条a可以为0吗,如果a=0,b=5,x=2,那么,ab+x=2,这样,2不就是合数了吗?
4.6.8.9.10.12.14.15.16.18.20.21.22.24.25.26.27.28.30.32.33.34.35.36.38.39.40.42.44.45.46.48.49.50.51.52.54.55.56.57.58.60.62.63.64.65.66.68.69.70.72.74.75.76.77.78. 80.81.82.84.85.86.87.88.90.91.92.93.94.95.96.98.99.100
求C语言中 判断素数的 代码!!!!!
基本思想:把m作为被除数,将2—INT( )作为除数,如果都除不尽,m就是素数,否则就不是。
可用以下程序段实现:
void main()
{ int m,i,k;
printf("please input a number:\n");
scanf("%d",m);
k=sqrt(m);
for(i=2;ik;i++)
if(m%i==0) break;
if(i=k)
printf("该数是素数");
else
printf("该数不是素数");
}
将其写成一函数,若为素数返回1,不是则返回0
int prime( m%)
{int i,k;
k=sqrt(m);
for(i=2;ik;i++)
if(m%i==0) return 0;
return 1;
}
扩展资料:
筛法求素数
一、基本思想
用筛法求素数的基本思想是:
把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
如有:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
1不是素数,去掉。剩下的数中2最小,是素数,去掉2的倍数,余下的数是:
3 5 7 9 11 13 15 17 19 21 23 25 27 29
剩下的数中3最小,是素数,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为:
2 3 5 7 11 13 17 19 23 29
二、C++实现
1、算法一:令A为素数,则A*N(N1;N为自然数)都不是素数。
#define range 2000
bool
IsPrime[range+1];
/*set函数确定i是否为素数,结果储存在IsPrime[i]中,此函数在DEV
C++中测试通过*/
void set(bool IsPrime[])
{
int i,j;
for(i=0;i=range;++i)
IsPrime[i]=true;
IsPrime[0]=IsPrime[1]=false;
for(i=2;i=range;++i)
{
if(
IsPrime[i])
{
for(j=2*i;j=range;j+=i)
IsPrime[j]=false;}}}
2、
说明:解决这个问题的诀窍是如何安排删除的次序,使得每一个非质数都只被删除一次。 中学时学过一个因式分解定理,他说任何一个非质(合)数都可以分解成质数的连乘积。
例如,16=2^4,18=2 * 3^2,691488=2^5 * 3^2 * 7^4等。如果把因式分解中最小质数写在最左边,有16=2^4,18=2*9,691488=2^5 * 21609,;
换句话说,把合数N写成N=p^k * q,此时q当然是大于p的,因为p是因式分解中最小的质数。由于因式分解的唯一性,任何一个合数N,写成N=p^k * q;的方式也是唯一的。
由于q=p的关系,因此在删除非质数时,如果已知p是质数,可以先删除p^2,p^3,p^4,... ,再删除pq,p^2*q,p^3*q,...,(q是比p大而没有被删除的数),一直到pqN为止。
因为每个非质数都只被删除一次,可想而知,这个程序的速度一定相当快。依据Gries与Misra的文章,线性的时间,也就是与N成正比的时间就足够了(此时要找出2N的质数)。
代码如下:
#includeiostream
#includecmath
using namespace std;
int main()
{
int N; cinN;
int *Location=new int[N+1];
for(int i=0;i!=N+1;++i)
Location[i]=i;
Location[1]=0; //筛除部分
int p,q,end;
end=sqrt((double)N)+1;
for(p=2;p!=end;++p)
{
if(Location[p])
{
for(q=p;p*q=N;++q)
{
for(int k=p*q;k=N;k*=p)
Location[k]=0;
}
}
}
int m=0;
for(int i=1;i!=N+1;++i)
{
if(Location[i]!=0)
{
coutLocation[i]" ";
++m;
}
if(m%10==0) coutendl;
}
coutendlmendl;
return 0;
}
该代码在Visual Studio 2010 环境下测试通过。
以上两种算法在小数据下速度几乎相同。
参考资料:百度百科-筛法求素数
一个自然数最多能表示成几个质数的和?
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
中文名
质数
外文名
prime number
别名
素数
例子
2、3、5、7、11、13、17、19
讨论范围
自然数集
个数
听语音
素数两性定理
6(x)+-1=(pP)6乘以完全不等数加减1是一对孪生素数。
其中,6(X-1=(P 6乘以阴性不等数减去1等于阴性素数;
6X)+1=P)6乘以阳性不等数加上1等于阳性素数。
(X=/=6NM+-(M-N)阴性不等数不等于阴性上下两式;
X)=/=6NM+-(N+M)阳性不等数不等于阳性上下两式。
(x)=/=6NM+-(M+-N) 完全不等数不等于阴阳上下四式产生的数。
(N,M两个自然数,N=《M)
素数分布规律
以36N(N+1)为单位,随着N的增大,素数的个数以波浪形式渐渐增多。
孪生质数也有相同的分布规律。
以下15个区间内质数和孪生质数的统计数。
S1区间1——72,有素数18个,孪生素数7对。(2和3不计算在内,最后的数是孪中的也算在前面区间。)
S2区间73——216,有素数27个,孪生素数7对。
S3区间217——432,有素数36个,孪生素数8对。
S4区间433——720,有素数45个,孪生素数7对。
S5区间721——1080,有素数52个,孪生素数8对。
S6区间1081——1512,素数60个,孪生素数9对。
S7区间1513——2016,素数65个,孪生素数11对。
S8区间2017——2592,素数72个,孪生素数12对。
S9区间2593——3240,素数80个,孪生素数10对。
S10区间3241——3960,素数91个,孪生素数18对。
S11区间3961——4752素数92个,孪生素数17对。
S12区间4752——5616素数98个,孪生素数13对。
S13区间5617——6552素数108个,孪生素数14对。
S14区间6553——7560素数113个,孪生素数19对。
S15区间7561——8640素数116个,孪生素数14对。(以上没有校正,可能有误差。)
素数分布规律的发现,许多素数问题可以解决
质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,pn加一是素数或者不是素数。
如果pn加一为素数,则pn加一要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。
如果pn加一为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以pn加一不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。
因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。
其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。
对于一定范围内的素数数目的计算
尽管整个素数是无穷的,仍然有人会问“100,000以下有多少个素数?”,“一个随机的100位数多大可能是素数?”。素数定理可以回答此问题。
素数分布规律的发现,许多素数问题可以解决。
在一个大于1的数a和它的2倍之间(即区间(a, 2a]中)必存在至少一个素数。
存在任意长度的素数等差数列。(格林和陶哲轩,2004年[1])
一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)
一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)
一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为 (1 + 5)(中国潘承洞,1968年)
一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为 (1 + 2)(中国陈景润)[2]
猜想
听语音
哥德巴赫猜想:是否每个大于2的偶数都可写成两个素数之和?
孪生素数猜想:孪生素数就是差为2的素数对,例如11和13。是否存在无穷多的孪生素数?
斐波那契数列内是否存在无穷多的素数?
是否有无穷多个的梅森素数?
在n2与(n+1)2之间是否每隔n就有一个素数?
是否存在无穷个形式如X2+1素数?
黎曼猜想
孪生素数是无限多的证明
关键词:完全不等数,SN区间,LN区间.
一。素数两性定理
大于3的素数只分布在6n-1和6n+1两数列中。(n非0自然数,下同)
6n-1数列中的合数叫阴性合数,其中的素数叫阴性素数;6n+1数列中的合数叫阳性合数,其中的素数叫阳性素数。
阴性合数定理
6[6NM+(M-N)]-1=(6N+1)(6M-1)(N M两个非0自然数,N=〈 M,下同)
6[6NM-(M-N)]-1=(6N-1)(6M+1)
在6n-1数列中只有这两种合数,余下就是阴性素数了,所以就有阴性素数定理
6NM+-(M-N)=/=x(阴性不等数)
6x-1=q(阴性素数)
阳性合数定理
6[6NM+(N+M)]+1=(6N+1)(6M+1)
6[6NM-(N+M)]+1=(6N-1)(6M-1)
在6n+1数列中只有这两种合数,余下就是阳性素数了,所以就有阳性素数定理
6NM+-(N+M)=/=X(阳性不等数)
6X+1=P(阳性素数)
二。与孪生素数相对应的完全不等数
完全不等数(X),它既不等于阴性上下两式;也不等于阳性上下两式。
(X)=/=6NM+-(M+-N)
则有6(X)+1=P 6(X)-1=q (p减1能被6整除的素数,q加1能被6整除的素数,下同)
一个完全不等数所产生的阴性素数q和阳性素数P就是一对孪生素数.
并且完全不等数与孪生素数是一一对应的.
三。阴阳四种等数在自然数列中的分布概况
6NM+(M-N)=阴性上等数6NM-(M-N)=阴性下等数
6NM+(N+M)=阳性上等数6NM-(N+M)=阳性下等数
为了搞清它们在自然数中分布情况,把四式中的N叫级别因子数,M叫无限因子数。
四种等数的每一个级别的最小等数都在6NN+-(N+N)范围。
每一级别的上等数相邻两等数距离是6n+1,在自然数列中比例是1/(6n+1),两种上等数每个级别的比例合计是2/(6n+1),(但实际是略少于这个比例因每一级别的底部都没有这个级别的上等数;下等数也一样的情况。)
每一级别的下等数相邻等数的距离是6n-1,在自然数列中的比例是1/(6n-1),阴阳两种下等数的每个级别的合计比例是2/(6n-1)。
每个级别的四种等数在自然数列中的比例是24N/[(6N+1)(6N-1)].
四。四种等数大小数列的互相渗透
自然数列中有阴性上等数数列,阴性的下等数数列,阳性上等数数列和阳性下等数数列。它们的级别有无限多,每一个级别的数列的等数都是无限多的。同一种等数级别不同的数列都是互相渗透而产生重叠,并以两级别的等数距离的乘积而严格地重叠的。在计算一种若干的级别的等数时用连乘式正好可以表示它的渗透重叠关系。四种等数数列之间都有互相渗透而重叠,只有同一级别阴阳上上数列.下下数列没有渗透.四种数列之间的渗透重叠不用计算也足够可以证明了。
五。与素数分布基本同步的SN区间
把自然数划分成12,24,36……以12为递增的一个个区间,这样的区间叫SN区间。SN区间与四种等数数列是同步的,即:
12(1+2+3+……+N)=6NN+6N
在这样的区间内包括N级别及以下的所有四种等数数列的等数,并没有比N级别大的数列等数,与四种等数的级别是完全同步的,所以与素数的分布也是同步的。
六。每个大于S8区间内都有8个以上的完全不等数
在每一个SN区间只有存在1至N级别的四种数列等数,每一级别等数的比例是可以确定,由于上下级别的渗透。就可以拿以下式来计算S8区间的完全不等数的至少个数。
12*8*11/35*95/143*251/323*479/575*779/899*1151/1295*1593/1763*2111/2303=8.2768
其他每一个SN区间可用这种方法计算.
随着区间的增大完全不等数计算的数量也会越来越多.以后都会超过8个.
七。误差分析
用最严格下取整的误差分析方法,将SN区间捆绑成1,2,4,8,16......2^(N-1)的LN区间.在每一个大于S8的SN区间计算都大于8个完全不等数,在每一个LN区间都有2^N-1级别等数数列, 每级级别有4种等数数列,每一级别一种等数筛一次误差极限是1 .每一个LN区间误差极限是4*(2^N-1).
8*2^(N-1)-4*(2^N-1)=4
最严格下取整后大于L4的区间仍然还有4个完全不等数。
八。总结
根据以上的论证,在大于S8区间每一个SN区间都有8个以上的完全不等数.
严格的下取整后,大于L4的每一个LN区间都还有多于4个的完全不等数以上的量。
LN区间是无限多的,完全不等数与孪生素数对是一一对应的,所以孪生素数也是无限多的。
这个证明期待着权威的表态。
性质
听语音
质数具有许多独特的性质:
(1)质数p的约数只有两个:1和p。
(2)初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。
(3)质数的个数是无限的。
(4)质数的个数公式 是不减函数。
(5)若n为正整数,在 到 之间至少有一个质数。
(6)若n为大于或等于2的正整数,在n到 之间至少有一个质数。
(7)若质数p为不超过n( )的最大质数,则 。
(8)所有大于10的质数中,个位数只有1,3,7,9。
编程
听语音
基本判断思路:
在一般领域,对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数。
质数大于等于2 不能被它本身和1以外的数整除
Python 代码:
from math import sqrt
def is_prime(n):
if n == 1:
return False
for i in range(2, int(sqrt(n))+1):
if n % i == 0:
return False
return True
Java代码:
1.
public static boolean testIsPrime2(int n){
if (n = 3) {
return n 1;
}
for(int i=2;in;i++){
if(n%i == 0)
return false;
}
return true;
}
/*优化后*/
public static boolean testIsPrime3(int n){
if (n = 3) {
return n 1;
}
for(int i=2;i=Math.sqrt(n);i++){
if(n%i == 0)
return false;
}
return true;
}
2.
public class Prime {
public static void main(String[] args) {
int a = 17; //判断17是不是质数
int c = 0;
for (int b = 2; b a; b++) {
if (a % b != 0) {
c++;
}
}
if (c == a - 2) {
System.out.println(a + "是质数");
} else {
System.out.println(a + "不是质数");
}
}
}
Php代码:
function isPrime($n) {//TurkHackTeam AVP production
if ($n = 3) {
return $n 1;
} else if ($n % 2 === 0 || $n % 3 === 0) {
return false;
} else {
for ($i = 5; $i * $i = $n; $i += 6) {
if ($n % $i === 0 || $n % ($i + 2) === 0) {
return false;
}
}
return true;
}
}
C#代码:
using System;
namespace 计算质数
{
class Program
{
static void Main(string[] args)
{
for (int i = 2,j=1; i 2100000000j=1000; i++)//输出21亿内的所有质数,j控制只输出1000个。
{
if (st(i))
{
Console.WriteLine("{0,-10}{1}",j,i);
j++;
}
}
}
static bool st(int n)//判断一个数n是否为质数
{
int m = (int)Math.Sqrt(n);
for(int i=2;i=m;i++)
{
if(n%i==0 i!=n)
return false;
}
return true;
}
}
}
C/C++代码:
#includeiostream
#includealgorithm
#includecmath
using namespace std;
const long long size=100000;//修改size的数值以改变最终输出的大小
long long zhishu[size/2];
void work(){//主要程序
zhishu[1]=2;
long long k=2;
for(long long i=3;i=size;i++){//枚举每个数
bool ok=1;
for(long long j=1;jk;j++){//枚举已经得到的质数
if(i%zhishu[j]==0){
ok=!ok;
break;
}
}
if(ok){
zhishu[k]=i;
cout"count"k' 'iendl;
k++;
}
}
}
int main(){
freopen("zhishu.out","w",stdout);
cout"count1 2"endl;
work();
return 0;
}
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
中文名
质数
外文名
prime number
别名
素数
例子
2、3、5、7、11、13、17、19
讨论范围
自然数集
个数
听语音
素数两性定理
6(x)+-1=(pP)6乘以完全不等数加减1是一对孪生素数。
其中,6(X-1=(P 6乘以阴性不等数减去1等于阴性素数;
6X)+1=P)6乘以阳性不等数加上1等于阳性素数。
(X=/=6NM+-(M-N)阴性不等数不等于阴性上下两式;
X)=/=6NM+-(N+M)阳性不等数不等于阳性上下两式。
(x)=/=6NM+-(M+-N) 完全不等数不等于阴阳上下四式产生的数。
(N,M两个自然数,N=《M)
素数分布规律
以36N(N+1)为单位,随着N的增大,素数的个数以波浪形式渐渐增多。
孪生质数也有相同的分布规律。
以下15个区间内质数和孪生质数的统计数。
S1区间1——72,有素数18个,孪生素数7对。(2和3不计算在内,最后的数是孪中的也算在前面区间。)
S2区间73——216,有素数27个,孪生素数7对。
S3区间217——432,有素数36个,孪生素数8对。
S4区间433——720,有素数45个,孪生素数7对。
S5区间721——1080,有素数52个,孪生素数8对。
S6区间1081——1512,素数60个,孪生素数9对。
S7区间1513——2016,素数65个,孪生素数11对。
S8区间2017——2592,素数72个,孪生素数12对。
S9区间2593——3240,素数80个,孪生素数10对。
S10区间3241——3960,素数91个,孪生素数18对。
S11区间3961——4752素数92个,孪生素数17对。
S12区间4752——5616素数98个,孪生素数13对。
S13区间5617——6552素数108个,孪生素数14对。
S14区间6553——7560素数113个,孪生素数19对。
S15区间7561——8640素数116个,孪生素数14对。(以上没有校正,可能有误差。)
素数分布规律的发现,许多素数问题可以解决
质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。它使用了证明常用的方法:反证法。具体证明如下:假设质数只有有限的n个,从小到大依次排列为p1,p2,……,pn,设N=p1×p2×……×pn,那么,pn加一是素数或者不是素数。
如果pn加一为素数,则pn加一要大于p1,p2,……,pn,所以它不在那些假设的素数集合中。
如果pn加一为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以pn加一不可能被p1,p2,……,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。
因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。
其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。
对于一定范围内的素数数目的计算
尽管整个素数是无穷的,仍然有人会问“100,000以下有多少个素数?”,“一个随机的100位数多大可能是素数?”。素数定理可以回答此问题。
素数分布规律的发现,许多素数问题可以解决。
在一个大于1的数a和它的2倍之间(即区间(a, 2a]中)必存在至少一个素数。
存在任意长度的素数等差数列。(格林和陶哲轩,2004年[1])
一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)
一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)
一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为 (1 + 5)(中国潘承洞,1968年)
一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为 (1 + 2)(中国陈景润)[2]
猜想
听语音
哥德巴赫猜想:是否每个大于2的偶数都可写成两个素数之和?
孪生素数猜想:孪生素数就是差为2的素数对,例如11和13。是否存在无穷多的孪生素数?
斐波那契数列内是否存在无穷多的素数?
是否有无穷多个的梅森素数?
在n2与(n+1)2之间是否每隔n就有一个素数?
是否存在无穷个形式如X2+1素数?
黎曼猜想
孪生素数是无限多的证明
关键词:完全不等数,SN区间,LN区间.
一。素数两性定理
大于3的素数只分布在6n-1和6n+1两数列中。(n非0自然数,下同)
6n-1数列中的合数叫阴性合数,其中的素数叫阴性素数;6n+1数列中的合数叫阳性合数,其中的素数叫阳性素数。
阴性合数定理
6[6NM+(M-N)]-1=(6N+1)(6M-1)(N M两个非0自然数,N=〈 M,下同)
6[6NM-(M-N)]-1=(6N-1)(6M+1)
在6n-1数列中只有这两种合数,余下就是阴性素数了,所以就有阴性素数定理
6NM+-(M-N)=/=x(阴性不等数)
6x-1=q(阴性素数)
阳性合数定理
6[6NM+(N+M)]+1=(6N+1)(6M+1)
6[6NM-(N+M)]+1=(6N-1)(6M-1)
在6n+1数列中只有这两种合数,余下就是阳性素数了,所以就有阳性素数定理
6NM+-(N+M)=/=X(阳性不等数)
6X+1=P(阳性素数)
二。与孪生素数相对应的完全不等数
完全不等数(X),它既不等于阴性上下两式;也不等于阳性上下两式。
(X)=/=6NM+-(M+-N)
则有6(X)+1=P 6(X)-1=q (p减1能被6整除的素数,q加1能被6整除的素数,下同)
一个完全不等数所产生的阴性素数q和阳性素数P就是一对孪生素数.
并且完全不等数与孪生素数是一一对应的.
三。阴阳四种等数在自然数列中的分布概况
6NM+(M-N)=阴性上等数6NM-(M-N)=阴性下等数
6NM+(N+M)=阳性上等数6NM-(N+M)=阳性下等数
为了搞清它们在自然数中分布情况,把四式中的N叫级别因子数,M叫无限因子数。
四种等数的每一个级别的最小等数都在6NN+-(N+N)范围。
每一级别的上等数相邻两等数距离是6n+1,在自然数列中比例是1/(6n+1),两种上等数每个级别的比例合计是2/(6n+1),(但实际是略少于这个比例因每一级别的底部都没有这个级别的上等数;下等数也一样的情况。)
每一级别的下等数
质数的和与积java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于质数的和与积算法、质数的和与积java的信息别忘了在本站进行查找喔。