例如,我有一个阶乘程序,它需要保存非常大的整数,其长度可能超过 50 位。C++ 中的绝对最大原始数据类型unsigned long long int
的最大值18446744073709551615
仅为 20 位。这是 C++ 限制的链接:http ://www.cplusplus.com/reference/climits/
如何将大于某个变量的数字存储在某种变量中?
例如,我有一个阶乘程序,它需要保存非常大的整数,其长度可能超过 50 位。C++ 中的绝对最大原始数据类型unsigned long long int
的最大值18446744073709551615
仅为 20 位。这是 C++ 限制的链接:http ://www.cplusplus.com/reference/climits/
如何将大于某个变量的数字存储在某种变量中?
您必须使用 bigint 或 bignum 实现。有一些像这样的库:http: //gmplib.org/
更多信息和图书馆列表:http ://en.wikipedia.org/wiki/Bignum
你可以使用数组。首先你应该复制那个巨大的数字数组,然后在 19 位数字后使用逗号:
unsigned long long int num[]= {
7316717653133062491,9225119674426574742,3553491949349698352,0,312774506326239578,3180169848018694788,
5184385861560789112,9494954595017379583,3195285320880551112,5406987471585238630,5071569329096329522,
7443043557668966489,5044524452316173185,6403098711121722383,1136222989342338030,8135336276614282806,
4444866452387493035,8907296290491560440,7723907138105158593,0,7960866701724271218,8399879790879227492,
1901699720888093776,6572733300105336788,1220235421809751254,5405947522435258490,7711670556013604839,
5864467063244157221,5539753697817977846,1740649551492908625,6932197846862248283,9722413756570560574,
9026140797296865241,4535100474821663704,8440319989000889524,3450658541227588666,8811642717147992444,
2928230863465674813,9191231628245861786,6458359124566529476,5456828489128831426,0,7690042242190226710,
5562632111110937054,4217506941658960408,0,7198403850962455444,3629812309878799272,4428490918884580156,
1660979191338754992,0,0,5240636899125607176,0,6058861164671094050,7754100225698315520,0,0,
5593572972571636269,5618826704282524836,0,0,8232575304207529634,50};
有很多方法可以存储非常大的数字,如下所示:
注意:请不要使用数组以避免内存问题。