Project Euler 10
今天终于搞完了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这个输出的问题该怎么解决……
作者:michaelxi007 发表于2013-11-17 23:16:24 原文链接
阅读:26 评论:0 查看评论