C++如何处理超大数据的计算比如2000的阶乘
经过我不懈的探查发现我的电脑64位Win10用64位vscode最大 能算1754的阶乘.还不保证准确度,错到姥姥家去了
1755就是inf无穷大 本帖最后由 jackz007 于 2019-11-23 22:21 编辑
那就得上密码学常用的大数运算库了吧?
我测试过,64 位整型能够计算的最大阶乘是 21,如果超过,就会溢出。
21 的阶乘结果是 : 0x21C3677C82B40000
22 的阶乘结果是 : 0x2C5077D36B8C40000 显然,这个结果已经超过 64 位了。 #include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
int main(void)
{
boost::multiprecision::cpp_int number("12345678900987654321");
std::cout << boost::multiprecision::pow(number, 1234) << std::endl;
return 0;
}
jackz007 发表于 2019-11-23 21:39
那就得上密码学常用的大数运算库了吧?
我测试过,64 位整型能够计算的最大阶乘是 21,如 ...
那就上大数运算库吧,boost走起
^_^
大数运算 你自己写程序 用数组保存数字 人造人 发表于 2019-11-23 22:24
这个库要单独下? 我叫MD 发表于 2019-11-24 00:30
大数运算 你自己写程序 用数组保存数字
加减乘幂,阶乘我会写
我会写,但是开方,多次开方就不会写了 bin554385863 发表于 2019-11-24 00:33
这个库要单独下?
你竟然不知道boost库?
https://baike.so.com/doc/558183-590960.html 人造人 发表于 2019-11-24 01:48
你竟然不知道boost库?
书上提到过.
但是不确定GCC有没有自带 bin554385863 发表于 2019-11-24 01:57
书上提到过.
但是不确定GCC有没有自带
应该没有自带,需要自己安装
页:
[1]