- 157 名前:Hx.net mailto: >>151
スレチかもしれないけど最小限の環境(小型マイコン)で計算してみた 言語はC $ cat fact.c #include<stdio.h> #include<math.h> int main() { long N,n,i[10]={0,0,0,0,0,0,0,0,0,0}; double lfac=0,mn; scanf("%ld",&N); for(n=1;n<=N;n++){ lfac+=log(n); for(mn=floor(lfac/log(2)+1+1e-12);mn>=10;mn/=10); i[(int)mn]++; } for(n=1;n<=9;n++)printf("%ld %ld\n",i[n],n); return 0; } $ gcc -O2 -Wall fact.c -lm -o fact $ echo 2024 | ./fact | sort -g 115 9 117 8 119 7 120 6 124 5 128 4 131 3 140 2 1030 1 さらに1から1000000までの結果 $ echo 1000000 | ./fact | sort -g 59655 9 60133 8 60685 7 61325 6 62090 5 63037 4 64260 3 65987 2 502828 1 [] - [ここ壊れてます]
|

|