gpt4 book ai didi

c - 找出两百万以下的所有质数之和。为什么我的代码不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 05:18:52 24 4
gpt4 key购买 nike

它应该打印 142,913,828,922,(而不是 1179908154 它是怎么做的...)怎么了?

http://pastebin.com/gJL4cMxm#

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main()
{
int n=2000000;
long long sum=0;
int m;
int i;
for(i=2;i<n;i++)
{
for(m=2;m<=sqrt(i);m++)
{
if(i%m==0)
{
break;
}
}
if(m>sqrt(i))
sum+=i;
}
printf("%d",sum);
getch();
}

最佳答案

变化:

printf("%d",sum);

收件人:

printf("%lld",sum);

解释:

如果变量sum 的大小是或更少 4 个字节,则在调用printf 之前将4 个字节的数据压入堆栈。

如果变量 sum 的大小是 8 个字节,则在 printf 调用之前将 8 个字节的数据压入堆栈。

之后,printf("%d"...) 将尝试从堆栈中读取 4 个字节的数据。

long long 类型的大小在一些编译器(可能包括你的)上是 8 个字节,因此 print("%d",sum) 只打印“较低的sum 的 half",这在您看来显然是错误的值(除非 sum < 2^32)。

关于c - 找出两百万以下的所有质数之和。为什么我的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21208951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com