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