[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;
}
注:当完成题目后,对于某些题,官方网站会给出参考答案,在我的博客里不会将官方答案贴出来,仅仅会写下我自己当时的思路,除非两者不谋而合。另外,如果你有更好的思路,请留言告诉我,我非常乐意参与到讨论中来。
分类:
Algorithm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2007-02-14 间隙缓冲区