|
本帖最后由 rosynirvana 于 2013-2-28 21:52 编辑
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int prime(int a);
- int main()
- {
- int a, count;
- count = 0;
-
- for(a = 3; a < 5000000; a+=2)
- if(prime(a) && prime(10000000-a))
- ++count;
-
- printf("count: %d", count);
- system("pause");
- return 0;
- }
- int prime(int a)
- {
- int upper = (int)sqrt(a);
- int i;
- for(i = 2; i <= upper; ++i)
- if(a % i == 0)
- return 0;
- return 1;
- }
复制代码 算是一种可行的解法
首先质数的试除,做到sqrt(a)就可以了,证明也很简单,可以尝试着做一做
另外嵌套循环的开销是很大的,所以检验a和10000000-a,只用一层循环
最后,10000000拆分成两个数字之和,两个偶数显然都不合质数的要求,只检验两个奇数的情况就足够了 |
|