Project Euler 10

来源:互联网 发布:xo网络用语是什么意思 编辑:程序博客网 时间:2024/06/06 12:40

本文章来自我的个人网站,如感兴趣,欢迎访问我的个人网站: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这个输出的问题该怎么解决……


原创粉丝点击