哥德巴赫猜想

一个猜想是一个久经考验的语句,可能是真实的,但不是现在。 一个投票的结果表明其有效性成为一个定理。 哥德巴赫猜想是一个最古老的问题需要解决,可以追溯到1742年,是由欧拉阐述对哥德巴赫和改写如下:

每个自然数大于2可以'演习写成2的总和
素数。

例如:
4 = 2 + 2
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7 = 5 + 5
12 + 5 = 7
14 = 3 + 11 = 7 + 7
16 = 3 + 13 = 5 + 11

试图证明其不准确

在一个猜想,我们可以作出两种类型的示范,证明其正确性或不准确。 显然,一个不包括其他。 我们将尽力证明猜想是假的,这样做只是为了找到一个反例的声明是虚假的画布。 因此,在我们的例子中,只找到一个单一的编号是不是两个素数之和。 为了找到这个数字将写一个程序。

一些考虑

所有的素数是奇数除2。 这才是真正为奇数的定义。 前两个数字添加到任何一个奇数通过其他号码的第一个结果。 唯一的案件中,2中添加另一个质数,甚至会导致数为2 + 2。 由此引伸,数字4是唯一可以作为素数与另一个素数二的书面总结。 该方案首先不考虑数字2和大于所有偶数4。

问题分解成子问题

行动,使该方案可以在不同阶段的继承图式:

  1. 查找所有素数从3 n
  2. 以所有的素数对(的P1,P2),使得他们的总和不超过ñ(即小一小二+ <= n)和我们认为(的P1,P2),那么将被丢弃(P2的小一)。
  3. 马克同6至n如果他们是情侣的结果为每名小一小二+(的P1,P2)以前找到。
  4. 打印所有偶数都没有标记为一个素数之和。

筛的埃拉托塞尼

ñ严峻素3为所有的数字从那里是一个古老的方法埃拉托塞尼被誉为筛。 这是写所有从2 n的数字,然后删除所有被排斥倍数为2(),所有被排斥倍数为3(),所有的倍数为5(不含)等。 这些数字“幸存者”,都是质数,只有2 N之间

然后,我们使用一个向量v标志,这个想法和'简单,我们纪念..等所有倍数的数字2,3,5, 因此,其余的都是第一次。 为了节省内存我从承运人三,检查只在奇数号码,例如:

指数承运人(补):0 1 2 3 4 5 6
信息(十):3 5 7 9 11 13 15
五[我]:TTTFTTF

法官协会使用切换功能*我十j = 1 2 3
反过来我=(十 - 3)/ 2
注:的J - 3总是一两个整除的数交叉路都多。

  long int n ) { 无效riempi_v(长整型 n)的(
   k ; 诠释 我,钾;
   i = 0 ; i < Size ( n ) ; i ++ ) {  (我 = 0;<量(N)+ +)(
     v [ i ] == TRUE ) 如果 (五[我] == 真)
       k = 3 ; ( 2 * i + 3 ) * k < n + 2 ; k = k + 2 )  技术(k = 3,(+ 2 * 3)* K表<ñ + 2 为K = k + 2)
         i * k + 3 * k - 3 ) / 2 ] = FALSE ;[(2 **的K *钾 3 - 3)/ 2] =虚假的;
   
  

回溯算法

一旦向量 v我知道什么是素数最多 n
现在,我发现所有的双(的P1,P2)。 要做到这使用一种算法,它使用了回溯的方法。 该算法“修剪”树递归所以他们不考虑号码,你不感兴趣的所有对。 因此,要尽可能优化,我们会发现,这个方案的优化是至关重要的,如果我们要实现良好的效果。

  / *心是和素数都对以前找到* /
 long int n , int i , int p1 , int p2 ) { 无效backtraking(长整型 氮, 诠释 我, 诠释 P1,P2  诠释 )(
   诠释 十;
   i == 2 ) {  (i == 2)(
     p2 ) / 2 ] = FALSE ; 平等= [(小一小二+)/ 2];
     / *输出(“项目(%d,%d个)\ N”的,的P1,P2)* /
   
   其他
     i == 0 ) 如果 (S == 0)
       x = 3 ; x != - 1 ; x = primo_successivo ( n , x ) ) {  (x = 3中,x!= - 1中,x = primo_successivo 的(n,x)段)(
         i + 1 , x , p2 ) ; backtraking(氮,+ 1中,x,第2页);
       
     其他
       / ** 
         *初始化x P1是验证猜想Goldback。 
         *地点primo_successivo x =(氮,P1)的发现人人平等 
         *数据由P1 + P2的与小一!= P2的 
         * /
       x = p1 ; x != - 1 ; x = primo_successivo ( n , x ) ) {  (x =小一到X!= - 1中,x = primo_successivo 的(n,x)段)(
         p1 + x <= n ) 如果 (小 + x年<= n)的
           i + 1 , p1 , x ) ; backtraking(氮,+ 1,小一中,x);
         ; 否则 突破;
       
   
  

发现对(的P1,P2)是总结和更新在同一运输工具 承运人具有同等大小为n / 2,每个元素对应一个偶数。

我们开发的项目1,第2和第3我们的问题,我们必须滚动平等载体和打印只在一个偶数这不是两个素数之存在的索引。

  i = 0 ; i < n / 2 ; i ++ )  (我 = 0;<n / 2个;+ +)
     pari [ i ] == TRUE ) 如果 (等于[我] == 真)
       "%d:i = %d \n " , pari [ i ] , 2 * i ) ; 输出 (“%D:我=%d行\ n”, [我],2 * 1); 

结果

你会发现effettaundo测试,增加n增加了执行时间。 随着一台电脑向英特尔5336.88 bogomips我花了5天 n等于100,000,000。

哥德巴赫猜想是应该由事实的确,作为一个甚至两个素数的数量增加和数概率。 有一个分布式计算项目,迄今已证实的猜想高达2 * 10 17(当我写。)

另一种猜想

我不想要我,但比较欧拉数与哥德巴赫猜想,其他可能会发现有趣的是,我帕萨特在该方案的写作初衷。 哥德巴赫是一个精致的话语。

所有自然数大于6,也可以和书面为P1两个素数的总和,这样的P2 P1是P2的不同

这是你的证明。 我可以向你保证,高达10 8是真实的。

2009年3月5日 •标签: •张贴: 的ANSI C电脑编程

2回应“哥德巴赫猜想”

  1. Chemla - 2009年3月6日

    卓悦的Linux!
    德预先审核阙乐特雷斯高兴杜隶à cette免费感兴趣的一个猜想。 济travaille恩autour业余depuis 3答等黛咪等周围的MES errances 13:30-13:50以及一切(!)À L' Adresse酒店http://denise.vella.chemla.free.fr
    伟大的放纵feuilleter avec新英格兰...
    图泰的助手,建议,亚雷马克晚上宾维纳。

    Logiciel自由报等阙活着!
    丹尼斯

  2. Thegamer - 2009年3月24日

    真漂亮...我等不及要尝试代码!

留下一个回复