c++ - C++ 中的超长类型,我可以为大型计算创建自己的超长类型吗?

标签 c++ types recursion numbers long-integer

我将向您展示一个非常简单的示例,非常是用递归调用阶乘计数,但是有一个细节非常重要,让我们看看我的代码,然后我将写下我的问题。

#define PASSWORD_MAX 0x28

typedef unsigned long long longtype;

#include <iostream>

using namespace std;


longtype f(longtype n)
{
    return (n <= 1) ? 1 : f(n - 1) * n;
};

void main(void)
{
    for(longtype i = 0; i <= PASSWORD_MAX; i++)
    {
        if(f(i) != 0) cout << i << " -> " << f(i) << endl;
    };
};

在这段代码之后,我得到了下一个结果:http://pastebin.com/ZHPtJBZ7

可读的最大结果是:22 -> 17196083355034583040

从 23 到结束,据我所知,只有“e”次方的数字,我怎样才能完整地打印 23 的值,而不是缩短格式?

谢谢,最好的问候!

最佳答案

您可以使用整数 vector 创建自己的超长整数类型。但是您需要为您的长整数类型实现算术运算,这当然不是一件容易的事。最好使用大整数库,例如 GMP

关于c++ - C++ 中的超长类型,我可以为大型计算创建自己的超长类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025409/

相关文章:

c++ - 如何使用 SSE 将 _m128i 转换为 unsigned int?

c++ - Qt:读取 .txt 文件时遇到问题

c++ - 如何包装具有参数的 C++ 类方法或在 C 中返回另一个 C++ 类的实例?

c++ - 类型 "const <Component> *"的值无法分配给类型 "<Component> *"的实体

c# - 从C#中的列表中选择指定的子类型

JavaScript 全局 boolean 变量将自身转换为字符串

c++ - 通过类引用

recursion - 每个递归函数都可以重写为迭代函数吗?

python - 将函数递归应用于字符串值的大多数 pythonic 方法

python - 哪个代码删除了排列中的重复组合