gpt4 book ai didi

c - 如何打印一个巨大的数字?

转载 作者:行者123 更新时间:2023-11-30 19:11:11 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来打印斐波那契数,例如

        0 1 1 2 3 5 8 21 ....

最后一个数字是前两个数字的总和。

我认为这很容易,但意识到你必须打印一个巨大的数字,例如

   117669030460994

这超出了 C 中每种可用数字类型的大小(刚刚检查过,远远超出)。

那么,我怎样才能存储和打印这么大的数字呢?

最佳答案

我不久前编写了一个类似的程序,它处理斐波那契序列的unsigned long long整数。我不确定它的效率如何,因为我使用数组来存储数字。

我还使用了 %I64d 格式说明符来打印巨大的 64 位 整数,因为我使用的是 Windows。但我认为如果你使用 Linux 那么 %llu 就可以了。

正如 @M Oehm 在评论中指出的,使用 uint64_t from 也是声明 unsigned long long 的另一种方式。

这就是它的样子:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define MAX 100

int
main(void) {
int i, range;

unsigned long long array[MAX];
/* or uint64_t from <stdint.h> */

printf("Enter number range: ");
if (scanf("%d", &range) != 1) {
printf("invalid number\n");
exit(EXIT_FAILURE);
}

array[0] = 0;
array[1] = 1;

for (i = 2; i < range; i++) {
array[i] = array[i-1] + array[i-2];
}

printf("Fibonacci Series is: ");
for (i = 0; i < range; i++) {
printf("%I64d ", array[i]);
}

return 0;
}

关于c - 如何打印一个巨大的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40547512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com