我刚刚开始使用C编程,并且正在从中进行锻炼。我现在在https://projecteuler.net/problem=10上,我写了以下代码:
#include <stdio.h>
#include <math.h>
int main()
{
long int i=0,below=0,a=0;
long int sum=0;
printf("belowe number: ");
scanf("%d",&below);
int board[below];
for(i=1;i<below;++i){
board[i]=0;
}
for(i=2;i<below;i++){
if(board[i]==0){
sum+=i;
for(a=2*i;a<=below;a+=i){
board[a]=1;
}
}
}
printf("sum = %d",sum);
return 0;
}
问题在于它返回的错误总和(1179908154)而不是(142913828922)。你能告诉我错误在哪里吗?我正在使用THIS方法来计算素数。
最佳答案
scanf("%d",&below);
这不是您阅读
long int
(below
对象的类型)的方式,而是使用ld
转换说明符。与您的printf
呼叫相同。