项目euler#10。得到错误答案

时间:2014-02-18 18:23:04

标签: c

我为欧拉的项目问题10编写了以下代码。虽然我得到正确的素数数字(由类似问题中给出的代码检查)但总和输出不正确 代码是

#include<stdio.h>
#include<stdbool.h>
#define upper 2000000
int main(void)
{
   bool prime[upper];
    long long sum=0, i,k;
    for(i=0;i<upper;i++)
    {
        prime[i]=true;
    }
    for(i=2;i<upper;i++)
    {
        if(prime[i])
        {

            for(k=2;i*k<upper;k++)
            {
                prime[k*i]=false;
            }
        }
    }
    long count=0;
    for(i=2;i<upper;i++)
    {
        if(prime[i])
        {
            count++;
            sum +=i;
        }
    }
    printf("%d %d",count,sum);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

printf("%d %d",count,sum);

是你的问题。总和得到正确计算,但您使用了错误的格式字符串。检查printf格式,尤其是输出long long所需的格式。