验证哥德巴赫猜想

 1 //验证2到一百万(任何一个大于2的偶数都可以表示成两个素数之和) 

 2 #include <iostream>

 3 #include <cstring>

 4 #include <cmath>

 5 using namespace std;

 6 

 7 const int N = 1000000;

 8 

 9 bool vis[N] = {0};

10 void init_prim()

11 {

12     int i,j,k;

13     int m = (int)(sqrt(N)+0.5); 

14     memset(vis,0,sizeof(vis));

15     vis[0] = 1;

16     vis[1] = 1;

17     for(i=2; i<m; i++)

18     if(!vis[i])

19     {

20         for(j=2*i; j<N; j+=i)

21             vis[j] = 1;

22     }  

23 }

24 

25 int main()

26 {

27     int i,j,k;

28     init_prim();

29     for(i=4; i<N; i+=2)

30     {

31         for(j=2; j<i; j++)

32         {

33             int temp = i-j;

34             if(!vis[j]&&!vis[temp])//为加快速度,可以把素数单独存在数组里 

35             {

36                 cout<<i<<" = "<<j<<" + "<<temp<<endl;

37                 break;

38             }

39         }

40         if(i==j)

41         {

42             cout<<""<<i<<"处定理不成立!"<<endl;

43             exit(1);//在此异常退出时并未打印----------- 

44         }

45     } 

46     cout<<"--------------"<<endl;

47     while(1); 

48     return 0;

49 }

 

你可能感兴趣的:(验证)