Shu*_*ham 2 c c++ algorithm printf
我正在解决一个问题,找到所有素数的总和,直到200万,在C中.我一直得到错误的答案(1179908154)但是当我在c ++中编写相同的代码时,它给出了正确的答案(142913828922).请告诉我为什么会这样,谢谢.
这是我的代码
void main()
{
int i,j;
unsigned long long sum;
for(sum=2,i=3;i<=2000000;i+=2)
{
for(j=3;j*j<=i;j++)
if(i%j==0)
break;
if(j*j>i)
sum+=i;
}
printf("%d",sum);
}
Run Code Online (Sandbox Code Playgroud)
我在Windows 7,32位并使用GNU GCC v4.7.1
aut*_*tic 11
%d说printf要期待一个int论点.sum是一个unsigned long long.这是未定义的行为.你可能想要printf("%llu\n", sum);.
int是不适合存储值的类型20000000; 实现不需要能够表示超出-32767或32767使用的值int.您可能希望i并且j成为unsigned long(适合表示最高的正值0xFFFFFFFFUL)或unsigned long long(适合表示最高的正值0xFFFFFFFFFFFFFFFFULL).如果您正在使用超出该值的值,则可能需要考虑使用任意精度算术库,例如gmplib.
void main()不是C中的有效入口点.您可能想要int main().
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |