美文网首页
2的100万次方是多少

2的100万次方是多少

作者: 863cda997e42 | 来源:发表于2021-12-17 15:43 被阅读0次

    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亿次方,但需要等待很久很久才能出结果。

    相关文章

      网友评论

          本文标题:2的100万次方是多少

          本文链接:https://www.haomeiwen.com/subject/phuifrtx.html