010.以下的质数的和是2 + 3 + 5 + 7 = 17.
找出两百万以下所有质数的和。
————————————————————————————————————————————
代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 #include <time.h> 5 #define N 2000000 6 7 int main(void) 8 { 9 10 int i,j,t=1; 11 double sum=5.0; 12 13 clock_t begin, end; 14 double cost; 15 begin = clock(); 16 17 18 for(i=5;i<N;i++) 19 { 20 for(j=2;j<=sqrt(i);j++) 21 { 22 if(i%j==0) 23 { 24 t=0;break; 25 } 26 27 } 28 if(t==1) sum+=i; 29 t=1; 30 } 31 32 printf("sum=%lf\n",sum); 33 34 end = clock(); 35 cost = (double)(end - begin) / CLOCKS_PER_SEC; 36 printf("%lf seconds\n", cost); 37 38 return 0; 39 }
输出结果为:
当中的循环判断绕得我有点晕,开始想把sum直接放在头一个if后面求得,也没想到用t这个变量来协助衡量,结果就是一遍一遍的调试for看哪儿逻辑错了。我知道这样儿我日后看来会很蠢,然而我还是有稍微的满足,这短短几句我能顺理成章的写出来不卡了。
还有一点,最初sum被我定义成int类,可以运算但结果是错误的,给了个10位的数。大意不得啊。