最小素数

最小素数

中文名 最小素数
简介 是一种特殊的形式
目录导航

举例

  极限素数和中最小素数值的变化

  例如:偶数24=3+3×7=5+19=7+17=3×3+3×5=11+13

       偶数22=3+19=5+17=7+3×5=3×3+13=11+11

  其中分成1+1的形式有三种:3+19,5+17,11+11

  在这三种分解式中,3+19是由一个最小素数和一个最大素数组成的式子,这样的式子我们就叫做“极限素数和”形式,11+11是相等的两个素数组成的素数和形式,因此称作“等素数和”形式。

  不难发现,“等素数和”这种形式不是每个偶数都能分解出来的形式,很明显,它需要具备这样的条件,偶数值的二分之一必须是素数。我们知道,偶数值的一半能够成为奇数这点本身就决定不是所有偶数都能做到的,例如凡是能够被4整除的偶数如8、12、16、20等等,它的二分之一都是偶数,因此不可能分解成“等素数和”的形式。

  在那些偶数值的二分之一能够成为奇数的内部,同样存在着两种情况:一种是奇数在表现形式上为素数,如6=3+3,14=7+7;另一种则为积数,如18=9+9,30=15+15。显然,前者能够分解成“等素数和”的形式,后者不具备分解成“等素数和”形式的条件。我国是2,国外是1.

等素数和

  这样说来,“等素数和”这种形式是一种特殊的形式,它不是每个大偶数都能分解出来的形式。“极限素数和”这种形式却具有连续可分解的特点。因此,它属于一般式,是任意大的偶数都能分解出来的形式。(在最小素数值取3时,它表现为不小于6 以上的偶数都具有的形式)。当然,这个结论是需要进行论证的。

极限素数和

  我们这里需要解决的问题是,看一下在“极限素数和”这种分解形式中,最小素数值的变化有什么样的规律。

  为了弄清这个问题,我们不妨先把100以内偶数分解为极限素数值的情况抄录下来:

  6=3+3     30=7+23    54=7+47    78=5+73

  8=3+5     32=3+29    56=3+53    80=7+73

  10=3+7    34=3+31    58=5+53    82=3+79

  12=5+7    36=5+31    60=7+53    84=5+79

  14=3+11   38=7+31    62=3+59    86=3+83

  16=3+13   40=3+37    64=3+61    88=5+83

  18=5+13   42=5+37    66=5+61    90=7+83

  20=3+17   44=3+41    68=7+61    92=3+89

  22=3+19   46=3+43    70=3+67    94=5+89

  24=5+19   48=5+43    72=5+67    96=7+89

  26=3+23   50=3+47    74=3+71    98=19+79

  28=5+23   52=5+47    76=3+73   100=3+97

  从100以内极限素数和的分解式中我们看到,最小素数值一开始总是围绕3、5、7变动着,似乎很有规律。然而,分解到98这个偶数时,情况突然发生了变化,最小素数值突然上升到19,接下来,又一下子跌回到素数3上,即98=19+79,100=3+97

  这种变化打破了最小素数值能够用数学表达式表示出来的幻想。偶数98出现的这种情况说明,在极限素数和中,最小素数值的变化是不成比例的,它是一种非线性变化。在具体变化过程中,存在着渐进过程的中断,存在着突变。偶数98 就是明显的一例。这种变化规律,就是哲学上量变质变规律的表现形式,它发生在偶数分解为两个素数之和的分解式中。

  当然,仅有这样一个实例还不能充分说明问题,我们再把偶数的分解范围扩大,这次我们以100为单位,找出最小素数值中的最大数值,看看它的发展变化具有什么特点。

  6~100最小素数值中的最大数值是19,它表现在偶数98 之中。下面则是按照这样的排列顺序,我们把3000以内的偶数,以100为分割单位,将其中最小素数的最大值与该偶数的分解式一同列出来,供大家分析:

  98=19+79      1006=23+983     2078=61+2017

  128=19+109    1150=41+1109    2188=47+2141

  220=23+197    1274=37+1237    2236=23+2213

  308=31+277    1382=61+1321    2372=31+2341

  488=31+457    1424=43+1381    2438=61+2377

  556=47+509    1532=43+1489    2512=53+2459

  640=23+617    1658=31+1627    2642=103+2539

  796=23+773    1768=47+1721    2776=23+2753

  854=31+823    1856=67+1789    2888=31+2857

  992=73+919    1928=61+1867    2996=43+2953

  由这个图表中我们看到,上面提出的最小素数值的变化本身是没有数学规律可循的,它不能用数学表达式反映出来。对于这一点我们的认识更清晰了。在这个以100为分割单位求出的最小素数值的最大数值表中我们看到,在1000以内,最小素数值已经上升到73,具体表现在偶数992的分解式上。然而,在1000至1100之间,最小素数值的变动最大才达到23的程度,接下来,在1100至1200之间,突然上升到41。发展到2642这个偶数身上时,最小素数值突然上升到103,它构成了3000以内最小素数值的极限。最小素数值的这种变化根本不符合数学规律,怎能用数学表达式概括出来呢?

  如果我们把整个变化通过折线图的形式表述出来,就会更加直观了。最小素数值的变化是没有数学表达式的。

数学猜想和分解验算

  如果数学猜想谜给出了最小素数值的数学表达式或者素数对变化的数学公式,那么它一定经不起分解验算的检验,在偶数具体的分解式中就会暴露出来数学公式的错误。事实上,在20世纪90年代曾有数学爱好者给出过素数对的公式,说自己已经证明出1+1的成立,结果被无情地否定了。因为他给出的素数对公式经不起实践检验,目前已经无人再提了。

  素数的分布没有数学规律,最小素数值的变化没有数学规律,素数对的变化同样没有数学规律。从这三个方面来看,数学无法正确地把握偶数分为两个素数之和的问题。因为这个关系式没有数学规律存在的地方。无论是素数的变化,最小素数值的变化,素数对的变化,都呈现出波浪式的变化特点,这种特点恰恰符合辩证法的发展规律。所以,我们才说,数学无法论证1+1的成立。其中的理论根据就在于这个关系式中没有数学变化规律存在,它们全都是哲学规律的反映。因此,哥德巴赫猜想实质是个哲学问题,它论证的是“一分为二”是否成立,是否正确。

  当然,由于哥德巴赫猜想是数学家提出来的,260多年来一直作为数学问题流传着,所以给人们一种假象,似乎1+1是数学问题,这是不可怀疑的。其实,早就有数学家提出了“哥德巴赫猜想超出了数学解题的能力”。但是,人们对于这种观点采取了蔑视的态度,认为这是他无能的表现。同时认为自己一定比这位数学家强,能够用数学方法证明1+1。结果怎样呢?并没有驳倒这位数学家的观点。因为直到现在,数学家仍然没有能够证明1+1的成立。

真理的掌握

  真理有时在少数人手里,通常人们并不否认这一观点的正确性,但是,遇到具体问题时,便对这一说法具有的真理性产生了怀疑。这就是当事者谜,旁观者清。那位在数学史上提出数学无法论证1+1成立的数学家,无疑是把握了真理,可是谁相信他的结论呢?当前,数学所已经没有人论证1+1问题了。为什么专家学者都不去论证它呢?因为没有找到解题的方法。突破口选在那里,从什么地方下手去解决它。数学中的筛法肯定不行,1+1无法进行筛选,它是波浪式的变化,就跟素数一样,永远也筛不完。没有数学规律,怎能解决它呢?所以,数学猜想谜要想解决1+1问题,首先需要寻找的是方法,把1+1归入数学方法中的哪一类,这个问题必须确定下来,否则你怎样下手解决它呢?  

  难怪数学研究方面的专家、学者、权威们看不起业余数学爱好者,因为人家首先看你使用的方法,不看你的具体论证过程。从方法入手,就知道你的结论有无价值。对于哥德巴赫猜想的论证,主要的功能就是研究和发展一种科学的思维方法。所以,数学猜想谜不要在具体的问题上花费太多的脑筋,应该在方法上多下些功夫。对于方法问题展开广泛的讨论,把现有的全部数学方法进行分析对比,看看到底那种数学方法适合论证1+1。为什么它适合论证1+1。有的网友说,用否定之否定规律。事实上,否定之否定这种方法具有的特点是开放性,无止境的发展,它怎能适合全部偶数呢?这样一分析,就知道这种方法论证不了1+1,因此,就不往下进行了。首先展开方法问题的讨论,才会真正促进哥德巴赫猜想的解决。至于具体的推论过程,那是属于细节问题。如果方法运用不当,根本就不可能论证成功。

  我们对于哥德巴赫猜想进行的分析,就是先从方法下手。首先认识到哥德巴赫猜想的实质,它要论证一分为二为什么成立。其次认识到这里面最重要的一点是涉及到理论与实践的关系问题。究竟是理论证明在决定1+1成立,还是分解验算决定1+1的成立,我们把1+1成立的基础建立在分解验算之上,这样就正确地摆正了理论与实践的关系。在1+1成立的基础上,我们论证了1+2过渡到1+1的方法,通过辩证运算完成从1+2向1+1的过渡。明确指出这是偶数分解为两个奇数之和具有的客观规律。

结论

  哲学的整个论证过程没有任何主观的因素在里面,完全是客观性的如实反映,因此,哲学证明是唯一正确的理论证明。这个结论摆在这里,等待人们不断地对它进行检验。只有经风雨见世面,被人们批驳不倒,它才能最终成为真理。于是人们就会懂得什么是辩证逻辑,什么是真正的两分法。

 

素数图表

  

(1,2,…,(P(n+1)-1)/2)
1 2 3 4 5 6 7 8
P=素数(prime number)
Pn# 2 3
6
2*3 6_1 5 11
6+1 7 13
30
2*3*5 30-13 17 47 77 = !(P(n+1)+ *(P(n+1)+,P(n+1)+…)
30-11 19 49 79
30-7 23 53 83
30-1 29 59 89
30+1 31 61 91
30+7 37 67 97
30+11 41 71 101
30+13 43 73 103
210
2*3*5*7 210-103 107 317 527 737 947
210-101 109 319 529 739 949
-97 113 323 533 743 953
89 331 541 751 961
83 127 337 547 757 967
79 131 341 551 761 971
73 137 347 557 767 977
71 139 349 559 769 979
67 143 353 563 773 983
61 149 359 569 779 989
59 151 361 571 781 991
53 157 367 577 787 997
47 163 373 583 793 1003
43 167 377 587 797 1007
41 169 379 589 799 1009
37 173 383 593 803 1013
31 179 389 599 809 1019
29 181 391 601 811 1021
23 187 397 607 817 1027
-19 191 401 611 821 1031
-17 193 403 613 823 1033
-13 197 407 617 827 1037
-11 199 409 619 829 1039
210-1 209 419 629 839 1049
210+1 211 421 631 841 1051
11 221 431 641 851 1061
13 223 433 643 853 1063
17 227 437 647 857 1067
19 229 439 649 859 1069
23 233 443 653 863 1073
29 239 449 659 869 1079
31 241 451 661 871 1081
37 247 457 667 877 1087
41 251 461 671 881 1091
43 253 463 673 883 1093
47 257 467 677 887 1097
53 263 473 683 893 1103
59 269 479 689 899 1109
61 271 481 691 901 1111
67 277 487 697 907 1117
71 281 491 701 911 1121
79 289 499 709 919 1129
83 293 503 713 923 1133
89 299 509 719 929 1139
97 307 517 727 937 1147
210+101 311 521 731 941 1151
210+103 313 523 733 943 1153
2310
(P11#)

相关知识

  C++几种常见的最小素数判断算法

  求解一个算法,我们首先要知道它的数学含义。依据这个原则,首先我们要知道什么是素数。; 素数是这样的整数,它除了表示为它自己和1的乘积以外,无论他表示为任何两个整数的乘积。

  找素数的方法多种多样。

  1:是从2开始用"是则留下,不是则去掉"的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000)。第一个数是2,它是一个素数,所以应当把它留下来,然后继续往下数,每隔一个数删去一个数,这样就能把所有能被2整除、因而不是素数的数都去掉。在留下的最小的数当中,排在2后面的是3,这是第二个素数,因此应该把它留下,然后从它开始往后数,每隔两个数删去一个,这样就能把所有能被3整除的数全都去掉。下一个未去掉的数是5,然后往后每隔4个数删去一个,以除去所有能被5整除的数。再下一个数是7,往后每隔6个数删去一个;再下一个数是11,往后每隔10个数删一个;再下一个是13,往后每隔12个数删一个。就这样依法做下去。

  但是编程我们一般不采用上面的方法,并不说这中方法计算机实现不了,或者说实现算法比较复杂。因为它更像一个数学推理。最后我们也给一个算法。

  下面我们介绍几种长用的编程方法。

  2:遍历2以上N的平方根以下的每一个整数,是不是能整除N;(这是最基本的方法)

  3:遍历2以上N的平方根以下的每一个素数,是不是能整除N;(这个方法是上面方法的改进,但要求N平方根以下的素数已全部知道)

  4:采用Rabin-Miller算法进行验算;

  例如:N=2^127-1是一个38位数,要验证它是否为素数,用上面几个不同的方法:

  验算结果,假设计算机能每秒钟计算1亿次除法,那么

  算法2要用4136年,算法3要用93年,算法4只要不到1秒钟!(这些数据是通过计算得到)

  另外印度有人宣称素数测试是P问题,我一直没有找到那篇论文,听说里面有很多数学理论。如果那位大人有这篇论文,麻烦转发一份。

  下面我们分别实现上面的三种算法:

  以下算法我们不涉及内存溢出,以及大数字的问题。如果测试数字超过2^32,发生内存溢出,你需要自己使用策略解决这个问题,在这里只讨论32位机有效数字算法。

  1: 算法0:是从2开始用"是则留下,不是则去掉"的方法把所有的数列出来

  最后数组中不为0的数字就是要查找的素数。

  void PrimeNumber0()

  {

  int time GetTickCount();

  cout start time time endl;

  int Max[MAX_NUMBER]; 在栈上分配,栈上空间要求一般都在2M之间,

  如果你需要更大空间,请在堆上申请空间(就是通过malloc,new来申请)。

  memset(Max,0,MAX_NUMBER);

  for(int i = 0 ; i MAX_NUMBER; ++i)

  原文出自【比特网】,转载请保留原文链接:https://soft.chinabyte.com/database/430/12209430.shtml

相关百科
返回顶部
产品求购 求购