Chinaunix首页 | 论坛 | 博客
  • 博客访问: 238987
  • 博文数量: 47
  • 博客积分: 1229
  • 博客等级: 中尉
  • 技术积分: 568
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-20 10:06
文章分类

全部博文(47)

文章存档

2014年(1)

2013年(7)

2012年(1)

2011年(38)

分类: C/C++

2011-03-04 00:03:14

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>

  4. #define N 2000000
  5. int prime[N/2];

  6. int is_prime(int num)
  7. {
  8.     int i;
  9.     int sqrt_num = sqrt(num);

  10.     for (i = 0; i < N; i++) {
  11.         if (prime[i]) {
  12.             if (!(num % prime[i]))
  13.                 return 0;
  14.             else if (prime[i] > sqrt_num)
  15.                 break;

  16.         } else
  17.             break;
  18.     }

  19.     return 1;
  20. }

  21. int main(int argc, const char *argv[])
  22. {
  23.     long long result;
  24.     int i, count;

  25.     memset(prime, 0, sizeof(prime));
  26.     result = prime[0] = 2;
  27.     count = 1;
  28.     for (i = 3; i < N; i += 2) {
  29.         if (is_prime(i)) {
  30.             prime[count++] = i;
  31.             result += i;
  32.         }
  33.     }

  34.     printf("result: %lld\n", result);
  35.     
  36.     return 0;
  37. }

  38. 用于存放prime的数组有些浪费内存了。

阅读(1174) | 评论(0) | 转发(0) |
0

上一篇:euler9

下一篇:euler4

给主人留下些什么吧!~~