gpt4 book ai didi

c++ - 低于 2,000,000 的质数总和给出错误结果

转载 作者:太空狗 更新时间:2023-10-29 20:04:08 25 4
gpt4 key购买 nike

我必须对所有低于 2,000,000 的质数求和,但我的代码给出了错误的结果(1,179,908,154 正确的是 142,913,828,922),因为它在较低的值下工作得很好,我无法找出问题所在。

#include <iostream>
using namespace std;

int main(){
unsigned int j, i=2,ans=2, interval=2000000;

while(i<=interval){
i++;
j=2;

while(i!=j){
if(i % j != 0)
j++;
else{
i++; j=2;}
}

if (i>=interval)
break;

cout << i<< endl;
ans+=i;
}

cout << ans;

cin.get();
return 0;
}

最佳答案

你将 ans 声明为 unsigned int,在今天的大多数机器上,它是 32 位的,它可以表示从 04294967295,但是200万以下的所有质数之和肯定远远超过4294967295,试试用unsigned long long代替。

顺便说一句,你使用的算法效率很低,你可以考虑The sieve of Eratosthenes :

关于c++ - 低于 2,000,000 的质数总和给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22084060/

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