Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何打印一个巨大的数字?_C_Numbers - Fatal编程技术网

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

C 如何打印一个巨大的数字?,c,numbers,C,Numbers,我正在写一个程序来打印斐波那契数,比如 0 1 1 2 3 5 8 21 .... 最后一个数是前两个数的和 我认为这很容易,但意识到你必须打印一个巨大的数字,如 117669030460994 它超过了C中所有可用类型的数字的大小(刚刚检查过,远远超过) 那么,我怎么能存储和打印这么大的数字呢?我不久前写了一个类似的程序,它处理斐波那契序列的无符号长整数。我不确定它的效率有多高,因为我使用了一个数组来存储数字 我还使用了%I64d格式说明符来打印巨大的64位整数,因为

我正在写一个程序来打印斐波那契数,比如

        0 1 1 2 3 5 8 21 ....
最后一个数是前两个数的和

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

   117669030460994
它超过了C中所有可用类型的数字的大小(刚刚检查过,远远超过)


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

我不久前写了一个类似的程序,它处理斐波那契序列的
无符号长整数。我不确定它的效率有多高,因为我使用了一个数组来存储数字

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

正如@M Oehm在评论中指出的那样,使用
uint64\u t
from也是声明
无符号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;
}
#包括
#包括
#包括
#定义最大值100
int
主(空){
int i,范围;
无符号长数组[MAX];
/*或从*/
printf(“输入数字范围:”);
如果(扫描频率(“%d”,&范围)!=1){
printf(“无效数字\n”);
退出(退出失败);
}
数组[0]=0;
数组[1]=1;
对于(i=2;i
您想要的是bignums,又称bignums。值得注意的是,有几个库可以实现这一点。您将能够计算数千(甚至数百万)位数的大型斐波那契数


请注意,bignum算法很难有效地实现。所以不要重新发明轮子,你会想到的几个简单的算法比最先进的算法效率要低。使用现有的库(通常会使用一些像“带进位的加法”这样的库来加速这种操作)。

使用更大的打印机?确保它不会超过
无符号长
,它最多允许
18446744073709551615
。查看:和。64位无符号整数可以存储F93。