本文章来自我的个人网站,如感兴趣,欢迎访问我的个人网站:http://www.qingshuimonk.com/
今天终于搞完了PE的第十题,说起来这道题做了得有小半个月了。
算法类似于PE的第十题,还是用之前的质数去除,以此来判断是否是质数,所以代码就在第七题的基础上稍稍改动一下就可以了。
unsigned long PrimeNum[200000], n, TotalPrime, j;
unsigned long long sum;
PrimeNum[0] = 2;
TotalPrime = 0;
sum = 2;
for(n = 3; n < = 2000000 ; n = n+2)
{
for(j = 0; j <= TotalPrime; j++)
{
if(n%PrimeNum[j] == 0)break;
if(j == TotalPrime)
{
TotalPrime++;
PrimeNum[TotalPrime] = n;
sum = sum + n;
}
}
}
printf("%d", sum);
之前不管怎样,输出都是1179908152,以为是程序哪里有问题,调了好久都没有调出来,今天无意中发现,其实是printf这个函数在%d输出的时候没法输出这么大的数所致(目前仅仅是推测),我在debug时将变量加入watchwindow,然后程序结束时发现sum的值为142913828922,果然是正确答案。只是,不晓得printf这个输出的问题该怎么解决……