gpt4 book ai didi

c++ - 我的代码不适用于大数字

转载 作者:行者123 更新时间:2023-11-30 20:26:54 25 4
gpt4 key购买 nike

看,上面的代码用于计算 2000000 以下的素数之和,但它没有给出正确的答案,但是当我尝试对 10 或 20 以下的素数求和时,它给出了正确的答案,任何人都可以帮忙我来发现发生了什么事!?

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

int main(){

unsigned int ref = 0, m,divisoes = 0 , total = 0,flag = 2;
unsigned int soma =0;

while(ref < 9999999999999){
ref = (flag * 2)-1;
m = ceil(sqrt(ref));
while( m > 2){
if(ref % m == 0)
divisoes++;
m--;
}
if(divisoes == 0){
if( ref > 2000000) // limitador
break;
printf("%d \n",ref);
soma += ref;
total ++;
}
divisoes = 0;
flag ++;
}
// somando mais 2 , por que dois é o unico numero primo par.
soma +=2;
total++;
printf("Soma %d , Total de Primos %d",soma,total);
return 0;


}

最佳答案

9999999999999unsigned int 的最大值 (2^32 - 1) 大很多。一个简单的修复方法可能是向所有文字添加 ULL 后缀,并将 unsigned int 切换为 unsigned long long

关于c++ - 我的代码不适用于大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554997/

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