欧拉计划010

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位的数。大意不得啊。

原文地址:https://www.cnblogs.com/hhccdf/p/3015491.html