2的100万次方是多少

2021-12-17  本文已影响0人  863cda997e42

2的100万次方是多少?
2的100次方是:1267650600228229401496703205376。这个数字已经很大了,
如果有人问2的100万次方是多少,那该怎么求呢?
首先要知道这个结果一定是一个很大的数,且这个数是确定的。要计算这个结果,需要把结果存储到数组中,分配一个long型的数组,空间要足够大。数组的每一位可存放10位结果,也就是100亿,可以看作是100亿进制的数,逢100亿进1。由于100万是很大的数,可以每次乘2的20次方,来减少计算次数。当然也可以每次乘2,不过需要等待很久。下面的代码实现了求2的100万次方。

#include <stdio.h>

//每一位存10位数字
#define MOL 10000000000
#define MOL_LEN 10

//存储结果的数组,最大为66666.
long array[66666] = {1};

int main(int argc, const char * argv[]) {
    // insert code here...
    long carry;//进位
    long temp;//中间结果
    int index;//记录结果的最高位索引
    int i;
    int j;
    int n;
    int k;
    n = 100;
    k = 20;//每次乘2的K次方,当n很大的时候,可以修改k的值,来加快计算。
    n /= k;
    index = 0;
    for (i = 1; i <= n; i++) {
        carry = 0;
        for (j = 0; j <= index ; j++) {
            temp = (array[j]<<k) + carry;
            array[j] = temp % MOL;
            carry = temp / MOL;
        }
        while (carry) {
            index++;
            array[index] = carry % MOL;
            carry /= MOL;
        }
    }
    i = index;
    printf("%ld", array[i]);
    i--;
    for (; i >= 0; i--) {
        printf("%0*ld", MOL_LEN, array[i]);
    }
    printf("\n");
    return 0;
}

通过简单修改上面的程序,同样可以求2的1亿次方,但需要等待很久很久才能出结果。

上一篇下一篇

猜你喜欢

热点阅读