验证哥德巴赫猜想

验证哥德巴赫猜想
验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示,例如:
4 = 2 + 2
6 = 3 + 3
..
9 8 = 1 9 + 7 9
 
分析:我们先不考虑怎样判断一个数是否为素数,而从整体上对这个问题进行考虑,可以这样做:读入一个偶数n,将它分成p和q,使n = p + q。怎样分呢?可以令p从2开始,每次加1,而令q = n - p,如果p、q均为素数,则正为所求,否则令p = p + q再试。
 
 
参考程序:
 
#include <math.h>
#include <stdio.h>
main( )
{
  long int j,n,p,q,flagp,flagq;
  printf("please input n :\n");
  scanf("%ld",&n );
  if (((n%2)!=0)||(n<=4))
    printf("input data error!\n");
  else
   {
     p = 1 ;
     do {
          p = p + 1 ;
          q = n - p ;
          flagp = 1 ;
          for(j=2;j<=(int)(sqrt(p));j++)    /*判断p是否为素数*/
            {
               if ((p%j)==0)
               {
                 flagp = 0 ;
                 break;        /*不是素数,退出循环*/
                }
              }
         flagq=1 ;
         for(j=2;j<=(int)(sqrt(q));j++)   /*判断q是否为素数*/

           {
             if ((q%j)==0)
             {
               flagq = 0 ;
               break ;  /*不是素数,退出循环*/
              }
           }
     } while(flagp*flagq==0);
   printf("%d = %d + %d \n",n,p,q) ;
  }

你可能感兴趣的:(验证哥德巴赫猜想)