作业帮 > 综合 > 作业

怎样计算大数阶乘? 最好有程序.

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/23 04:14:09
怎样计算大数阶乘? 最好有程序.
怎样计算大数阶乘? 最好有程序.
我在网上找到了一个计算大数阶乘位数的算法,效率相当可观:例如1000阶乘位数:log10(1)+log10(2)+···+long10(1000)取整后加1或者log(N!)=lnN!/ln10=(NlnN-N)/ln10=2565.7soN!=10^2565.7=10^.7*10^2565=5.01e2565
然后,计算大数阶乘,只能靠计算机,用高精度,程序如下:var a:array[1..10000000]of longint;    n,i,j,ans,mark:longint;
procedure findmark;var i:longint;begin for i:=10000000 downto 1 do  if a[i]>0 then  begin   mark:=i;   exit;  end;end;
begin      a[1]:=1; readln(n);
 for i:=2 to n do begin  ans:=0;  mark:=mark+5;  for j:=1 to mark+5 do  begin   a[j]:=a[j]*i+ans;   ans:=a[j] div 10;   a[j]:=a[j] mod 10;  end; end;
 findmark; for i:=mark downto 1 do  write(a[i]); writeln;                          end.
这里还附上一个可执行文件,输入n,可以输出n!