如何获得比最大 bitint 所能提供的更大的整数?

问题描述 投票:0回答:1

我正在尝试制作一个简单的斐波那契计算器,但 bitints 最大位数 65535 太小了。
有什么办法可以得到更大的整数吗?

typedef unsigned _BitInt(65535) u65535;
int main(void) {
    int n = 99999;
    u65535 a = 1;
    u65535 b = 1;
    u65535 c;
    for (int i = 1; i < n; i++) {
        c=a+b;
        a=b;
        b=c;
        printf("fib: %u\n", a);
    }
    return 0;
} ```
c integer largenumber
1个回答
0
投票

从算法的角度来看,可以使用两个表示大整数的字符串创建一个简洁的求和函数。由于每个字符都是一个数字,因此字符串最多可以包含数百万个数字。这是我的示例代码。计算第 99,999 个斐波那契数有点慢,大约需要 10 秒。

string addStrings(const string &a, const string &b) {
    string result;
    int carry = 0, sum = 0;
    int maxSize = max(a.size(), b.size());
    for (int i = 0; i < maxSize || carry; ++i) {
        sum = carry;
        if (i < a.size()) sum += a[a.size() - 1 - i] - '0';
        if (i < b.size()) sum += b[b.size() - 1 - i] - '0';
        result.push_back(sum % 10 + '0');
        carry = sum / 10;
    }
    reverse(result.begin(), result.end());
    return result;
}

int main() {
    string a = "0", b = "1";
    for (ll i = 2; i <= 99999; ++i) {
        string c = addStrings(a, b);
        a = b;
        b = c;
    }
    cout << a << endl;
}

我不确定这个回复是否满足您的要求。不过,我欢迎您提出任何反馈或意见。

© www.soinside.com 2019 - 2024. All rights reserved.