bin554385863 发表于 2019-11-23 21:12:28

C++如何处理超大数据的计算比如2000的阶乘

经过我不懈的探查发现我的电脑64位Win10用64位vscode
最大 能算1754的阶乘.还不保证准确度,错到姥姥家去了
1755就是inf无穷大

jackz007 发表于 2019-11-23 21:39:30

本帖最后由 jackz007 于 2019-11-23 22:21 编辑

       那就得上密码学常用的大数运算库了吧?

       我测试过,64 位整型能够计算的最大阶乘是 21,如果超过,就会溢出。

       21 的阶乘结果是 : 0x21C3677C82B40000

       22 的阶乘结果是 : 0x2C5077D36B8C40000 显然,这个结果已经超过 64 位了。

人造人 发表于 2019-11-23 22:24:48

#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;
}

人造人 发表于 2019-11-23 22:30:03

jackz007 发表于 2019-11-23 21:39
那就得上密码学常用的大数运算库了吧?

       我测试过,64 位整型能够计算的最大阶乘是 21,如 ...

那就上大数运算库吧,boost走起
^_^

我叫MD 发表于 2019-11-24 00:30:02

大数运算   你自己写程序 用数组保存数字

bin554385863 发表于 2019-11-24 00:33:32

人造人 发表于 2019-11-23 22:24


这个库要单独下?

bin554385863 发表于 2019-11-24 00:35:57

我叫MD 发表于 2019-11-24 00:30
大数运算   你自己写程序 用数组保存数字

加减乘幂,阶乘我会写
我会写,但是开方,多次开方就不会写了

人造人 发表于 2019-11-24 01:48:48

bin554385863 发表于 2019-11-24 00:33
这个库要单独下?

你竟然不知道boost库?

人造人 发表于 2019-11-24 01:49:51

https://baike.so.com/doc/558183-590960.html

bin554385863 发表于 2019-11-24 01:57:21

人造人 发表于 2019-11-24 01:48
你竟然不知道boost库?

书上提到过.
但是不确定GCC有没有自带

人造人 发表于 2019-11-24 02:17:28

bin554385863 发表于 2019-11-24 01:57
书上提到过.
但是不确定GCC有没有自带

应该没有自带,需要自己安装
页: [1]
查看完整版本: C++如何处理超大数据的计算比如2000的阶乘