我为欧拉的项目问题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;
}
答案 0 :(得分:3)
printf("%d %d",count,sum);
是你的问题。总和得到正确计算,但您使用了错误的格式字符串。检查printf格式,尤其是输出long long所需的格式。