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 查看评论

 

posted on 2013-11-17 23:16  清水老和尚  阅读(234)  评论(0编辑  收藏  举报

导航