奇文共赏析:从一道简单的题目说开来
题目:对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
请在下面跟帖回答。