C+中的大数字+; 我试图在C++变量中放置一个大数。电话号码是600851475143

C+中的大数字+; 我试图在C++变量中放置一个大数。电话号码是600851475143,c++,biginteger,C++,Biginteger,我尝试了unsigned long long int,但出现了一个错误,表示常量太大。 然后我尝试了一个名为bigInt-> 问题是我无法编译代码,因为我在lib中遇到了很多错误 对“BigInteger::BigInteger(int)”的未定义引用您可以通过后缀L指定长度相同的整数文字。 您可以通过后缀LL指定长度相同的整数文字。 #include <iostream> int main() { long long num = 600851475143LL;

我尝试了unsigned long long int,但出现了一个错误,表示常量太大。 然后我尝试了一个名为bigInt->

问题是我无法编译代码,因为我在lib中遇到了很多错误


对“BigInteger::BigInteger(int)”的未定义引用您可以通过后缀L指定长度相同的整数文字。
您可以通过后缀LL指定长度相同的整数文字。

#include <iostream>

int main()
{
    long long num = 600851475143LL;

    std::cout << num;
}
#包括
int main()
{
long long num=600851475143LL;

std::cout数字为600851475143对于long-long-int来说不是太大,但在使用long-long常量(ULL表示无符号long-long-int)时需要使用LL后缀:


是否有一个bigint库要链接,或者有一个bigint.cpp要编译?

大整数库的存在是为了表示您的语言本机无法处理的整数。这意味着,您甚至不能将其写为文字。可能,该库有办法将字符串解析为一个大数字。

如果您得到的是未定义的引用er对于bignum库,您可能没有链接它。在Unix上,您必须传递一个选项,如-lbigint。如果您使用的是IDE,则必须找到链接器设置并添加库


至于数字,如前所述,自然常数默认为int类型。必须使用LL/LL来获得long-long。

在这种情况下,首先要做的是找出可以放入无符号long-long中的最大数字是什么。因为它是64位的,所以最大的数字是2^64-1=18446744073709551615,也就是l比你的号码更大。然后你知道你做错了什么,你看看Martin York的答案,看看如何解决它。

在更一般的情况下,当你不能很长时间适应你的号码,并且可以使用GNU LGPL许可证()时,我建议尝试GNU多精度库()

它速度非常快,用C编写,并附带了一个非常酷的C++包装库。

试试这个。 基本上,您可以拥有自己的自定义类,该类使用链表存储无限大小的数量。(RAM是限制) 试试这个

在这个问题被问到五年后,如果有人对这个图书馆有任何问题,这就是你的答案。 你不能只是编译你的程序,它将无法链接到一个丑陋的无法穿透的错误! 该库是C++文件的集合,您应该编译到.O文件并链接到它。如果您查看示例程序提供的make文件的输出,您将看到:
g++ -c -O2 -Wall -Wextra -pedantic BigUnsigned.cc
g++ -c -O2 -Wall -Wextra -pedantic BigInteger.cc
g++ -c -O2 -Wall -Wextra -pedantic BigIntegerAlgorithms.cc
g++ -c -O2 -Wall -Wextra -pedantic BigUnsignedInABase.cc
g++ -c -O2 -Wall -Wextra -pedantic BigIntegerUtils.cc
g++ -c -O2 -Wall -Wextra -pedantic sample.cc
g++ sample.o BigUnsigned.o BigInteger.o BigIntegerAlgorithms.o BigUnsignedInABase.o BigIntegerUtils.o -o sample
用程序名替换
sample
,将这些行粘贴到makefile或脚本中,然后离开。

ProjectEuler#3…这是一个棘手的问题…我也遇到了同样的问题。我也查看了BigInt库,但我注意到它们没有正确实现后缀运算符…所以我认为这里面还潜伏着其他问题他们的代码。
unsigned long long int num = 600851475143ULL;
g++ -c -O2 -Wall -Wextra -pedantic BigUnsigned.cc
g++ -c -O2 -Wall -Wextra -pedantic BigInteger.cc
g++ -c -O2 -Wall -Wextra -pedantic BigIntegerAlgorithms.cc
g++ -c -O2 -Wall -Wextra -pedantic BigUnsignedInABase.cc
g++ -c -O2 -Wall -Wextra -pedantic BigIntegerUtils.cc
g++ -c -O2 -Wall -Wextra -pedantic sample.cc
g++ sample.o BigUnsigned.o BigInteger.o BigIntegerAlgorithms.o BigUnsignedInABase.o BigIntegerUtils.o -o sample