2^10=1024对应于十进制的4位,那么2^1000对于十进制的多少位呢?
背景系统为linux 64 位编译器
用数组存
#include<stdio.h>
#define N 1000
int cal(int v[],int x,int n)
{
int i,j,k,cp,s;
v[N-1]=1;
s=N-2;
for(i=1;i<n+1;++i){
cp=0;
for(j=N-1;j>s;--j){
k=v[j]*x+cp;
v[j]=k%10;
cp=k/10;
}
while(cp){
v[s--]=cp%10;
cp=cp/10;
}
}
return s;
}
int main(void)
{
int x,n,v[N],s,i;
printf("请输入底数和指数:");
scanf("%d%d",&x,&n);
s=cal(v,x,n);
printf("%d^%d=",x,n);
for(i=s+1;i<N;++i){
printf("%d",v[i]);
}
printf("\n");
printf("结果共有%d位",N-s-1);
return 0;
}
利用公式a^n=10^(nlga),求有多少位,就是求nlga + 1的值,代入可得1000log2 + 1 = 302
2^1000 ≈ 10^301
简单的数学知识即可估算。这里用到一个性质:
log2(10)×log10(x)=log2(x)
3.321928×n=1000
解得n≈301