zoukankan      html  css  js  c++  java
  • [Project Euler] 来做欧拉项目练习题吧: 题目010

                                         [Project Euler] 来做欧拉项目练习题吧: 题目010

                                                                      周银辉 

    问题描述:

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

    Find the sum of all the primes below two million. 

    问题分析:

    求小于2000000的所有素数之和。

    非常简单,还记得第7题的“筛法求素数”吧, 采用相同的方法就可以了,在建立素数缓冲区的过程中随便累计一下就是该题的答案了。

    #include <stdio.h>
    #include <stdlib.h>
    long long getSum(int n)
    {
    long long sum = 0;
    char *array=(char*) malloc(n+1);
    int i;
    for(i=0; i<n+1; i++)
    {
    array[i]='r';   //'r' : remain
    }
    array[0]='d';         //'d' : delete
    array[1]='d';
    int p=2;
    while(p*p<=n)
    {
    if(array[p]=='r')
    {
    int j;
    for(j=2; j*p<=n; j++)
    {
    array[j*p]='d';
    }
    }
    p++;
    }
    for(p=2; p<=n; p++)
    {
    if(array[p]=='r')
    {
    sum += p;
    }
    }
    free(array);
    return sum;
    }
    int main()
    {
    int max=2000000;
    long long sum = getSum(max);
    printf("sum of the prime numbers under %d is %lld\n", max, sum);
    return 0;
    }

    注:当完成题目后,对于某些题,官方网站会给出参考答案,在我的博客里不会将官方答案贴出来,仅仅会写下我自己当时的思路,除非两者不谋而合。另外,如果你有更好的思路,请留言告诉我,我非常乐意参与到讨论中来。

  • 相关阅读:
    .net对象生命周期 一) 转载
    HTTP的版本 转载
    sql server sql语句判断是否有表备注并进行新增或修改
    sql server update触发器
    vs文件属性复制到输出目录 转载
    c#使用log4net记录日志 转载
    windows服务定时器 转载
    vs创建项目以后修改https为http
    消息队列 转载
    nmp 设置淘宝镜像
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/1953995.html
Copyright © 2011-2022 走看看