gpt4 book ai didi

c++ - 寻找最大的质因数? (不能大量使用吗?)

转载 作者:行者123 更新时间:2023-12-01 23:00:18 24 4
gpt4 key购买 nike

我是 C++ 的初学者,我刚刚读完了 C++ Primer 的第 1 章。所以我尝试了计算最大质因数的问题,我发现我的程序在 10e9 的大小下运行良好,但在那之后失败,例如 600851475143,因为当我将任何大数输入时,它总是返回一个有线数字,例如 2147483647它。我知道类似的问题已经被问过很多次,我只是想知道为什么这会发生在我身上。提前致谢。

附言我想原因与我的程序的某些部分无法处理大量数据有关。

#include <iostream>

int main()
{
int val = 0, temp = 0;
std::cout << "Please enter: " << std::endl;
std::cin >> val;
for (int num = 0; num != 1; val = num){
num = val/2;
temp = val;
while (val%num != 0)
--num;
}
std::cout << temp << std::endl;
return 0;
}

最佳答案

您的 int 类型是 32 位(与大多数系统一样)。一个带符号的 32 位二进制补码值可以存储的最大值是 2 ** 31 - 1,即 2147483647。看看at man limits.h如果你想知道定义类型限制的常量,和/或使用更大的类型(例如 unsigned 基本上免费将你的范围加倍,uint64_t 来自 stdint.h/inttypes.h 会将其扩展 84 亿倍,并且仅在 32 位系统上花费一些有意义的东西。

关于c++ - 寻找最大的质因数? (不能大量使用吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72039771/

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