# 修改自我的另一份代码, 部分代码或差劲, 能出结果就行.time ./sum200
(p) 2
(p) 3
(p) 5
(p) 0
(p) 0
(next)(p) 148933
(prime p) 0
sum 142913828922.000000
real 0m0.685s
user 0m0.648s
sys 0m0.024s
#include <stdio.h>
#include <math.h>
#define LEN 2000000
int main(){
static int prime[LEN] = {2, 3, 5};
static int num[LEN] = {0, 0, 2, 3, 0, 5};
int i, j;
int p, root, found;
double sum;
for (i=0; i<5; i++) {
printf("(p) %d\n", prime[i]);
}
for (i=6; i<LEN;) {
i++;
num[i] = i;
i++;
}
for (i=6; i<LEN;) {
i += 3;
num[i] = 0;
}
for (i=5; i<LEN;) {
i += 5;
num[i] = 0;
}
p = 3;
printf("(next)");
for (i=7; i<LEN;i++) {
if (num[i] > 0) {
root = (int)sqrt(num[i]);
for (j=3; j<root; j++) {
if (prime[j] > root ) {
found = 1;
break;
}
if (num[i] % prime[j] == 0) {
found = 0;
break;
}
else {
found = 1;
}
}
if (found == 1) {
prime[p] = num[i];
p++;
if (p == LEN) {
break;
}
}
}
}
printf("(p) %d\n", p);
printf("(prime p) %d\n", prime[p]);
for (sum=0,i=0;i<LEN;i++){
sum += prime[i];
}
printf("sum %lf\n", sum);
}
|