33,028
社区成员
发帖
与我相关
我的任务
分享#include <stdio.h>
#include <math.h>
int maxNForCalcE(int d){
double f=d*log(10);
double r=0;
int i=0;
do{
i++;
r += log(i);
}while (r<f);
return i;
}
int main(){
printf("%d!<10^1000\n",maxNForCalcE(1000));
return 0;
}450!<10^1000
Press any key to continue# //欲达到n位有效数字,需使得 n!> 10^n
# //返回计算d位有效数字所需的最大的n# //欲达到d位有效数字,需使得 n!> 10^d
# //返回计算d位有效数字所需的最大的n#include<stdio.h>
int fun(int a){
int n=0,i,s=1;
for(i=2;i<=a;i++){
s*=i;
while(s>9999999){
s/=10;n++;
}
}
while(s){
n++;s/=10;
}
return n;
}
int main(){
long i;
for(i=580;i<600;i++){
printf("%d!->%ld\n",i,fun(i));
}
return 0;
}580!->997
581!->999
582!->1000
583!->998
584!->999
585!->1001
586!->1004
587!->1004
588!->1007
589!->1009
590!->1010
591!->1012
592!->1015
593!->1014
594!->1017
595!->1019
596!->1022
597!->1024
598!->1027
599!->1029
Press any key to continue