Project Euler 10

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值