问题 10
The sum of the primes below 10 is 2+3+5+7=17.
Find the sum of all the primes below two million.
有小于10的质数的和是2+3+5+7=17。
求所有小于两百万的质数的和。
思路分析
这是来自欧拉计划中的题目,通过观察题不难发现,知识点重要涉及质数(素数)。所以首先要对数据进行判断找到质数,质数是出自身和一以外无其他因数,在这里就不详细赘述了。在少于10内,数据较小,可以直接使用暴力算法 。题目要求两百万以内,数据量是很大的,推荐使用更优化算法,我亲自尝试了一下,用了大概六七秒的时间,当然每个计算机算出时间略微有差异,这是很正常的。
程序代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
long long int i,j,flag=0;
long long int sum=0;
for(i=2;i<2000000;i++)
{
flag=0;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
flag=1;(用来标示是否有其他因数出现)
break;
}
}
if(flag==0)
{
sum+=i;
}
}
printf("%d",sum);
return 0;
}