奇文共赏析:从一道简单的题目说开来

题目:对6~60的偶数,验证哥德巴赫猜想:不小于6的偶数可以分解成2个素数之和。

有人给出了如下代码:

    1 /*

    2   Name:

    3   Copyright:

    4   Author:

    5   Date: 13/06/12 14:42

    6   Description:

    7         第二册,P37,练习7,第1题

    8         对6~60的偶数,验证哥德巴赫猜想:不小于6的偶数可以分解成2个素数之和。

    9 */

   10 

   11 #include<iostream>

   12 using namespace std;

   13 

   14 /*检查a(a>=2)是否是素数,

   15 返回:1:是素数;0:不是素数。*/

   16 int f(int a) {

   17     int m=2;

   18     while (a%m!=0) m++;

   19     if(m==a) return 1;

   20     else return 0;

   21 }

   22 

   23 int main() {

   24     int a,

   25         b,

   26         x,

   27         m;

   28 

   29     for(x=6;x<=60;x=x+2) {

   30         for(a=2;a<=x-1;a++) {

   31             b=x-a;

   32             if(f(a)==1 && f(b)==1) {

   33                 cout<<x<<"="<<a<<"+"<<b<<endl;

   34             }

   35         }

   36     }

   37 

   38     system("pause");

   39     return 0;

   40 }
</H blockquote <>

这个代码可以得出正确的运行结果,可是……它实在是跑得太慢了

现在请听题:这是为啥呢?

具体的源代码,请见:http://sdrv.ms/Oxt0Z8

请在下面跟帖回答。

你可能感兴趣的:(简单)