當(dāng)指數(shù)非常大時(shí)候(比如1000,10000),直接調(diào)用C的庫函數(shù),會導(dǎo)致溢出。用此函數(shù)可正確計(jì)算指數(shù)結(jié)果,無論指數(shù)的數(shù)量級有多大(需正確給定相應(yīng)進(jìn)制的位數(shù)即ARRAY_LEN)。
/****
*計(jì)算 M 的 N 次冪 M^^N,以C進(jìn)制呈現(xiàn)結(jié)果;(C < 256)
*/
#include <stdio.h>
#define M 2
#define N 9
#defien C 10
#define ARRAY_LEN (N / 3 + 1) //正確的長度是(logC(M))* N
int main()
{
int array[ARRAY_LEN] = {0};
int j = 0;
array[ARRAY_LEN-1] = 1;
for(j = 0; j < N; j++){
int t = 0;
for(int i = ARRAY_LEN-1; i > ARRAY_LEN - 1 - (j / 3 + 1) ; i--){
int tmp = array[i] * M + t;
array[i] = tmp % C;
t = tmp/10;
}
}
for( j = 0; j < ARRAY_LEN; j++){
if( array[j] != 0)
break;
}
for( ; j < ARRAY_LEN; j++){
printf("%d",array[j]);
}
printf("\n");
return 0;
}
完整實(shí)例圖如下:
2的9次冪:

2^^9.png
2的16次冪:

2^^16.png
2的10000次冪:

2^^10000
由于2的10000次冪結(jié)果太大,一般難以驗(yàn)證,為驗(yàn)證程序結(jié)果是否正確,調(diào)用了python自帶的(python的math庫和C的math庫中的pow函數(shù)都會溢出)指數(shù)函數(shù)pow(2, 10000);兩者結(jié)果截圖如下,可驗(yàn)證其正確性:

2^^10000.png