|
发表于 2016-8-7 08:03:32
|
显示全部楼层
# 修改自我的另一份代码, 部分代码或差劲, 能出结果就行.
- 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);
- }
复制代码 |
|