怎样计算大数阶乘? 最好有程序.
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间: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!
然后,计算大数阶乘,只能靠计算机,用高精度,程序如下: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!
怎样计算大数阶乘? 最好有程序.
计算1000的阶乘求能计算大数阶乘的程序,最好有源代码...aini24680。但是代码编译不通过啊。我补上#inclu
计算10000的阶乘(大数运算),结果不能发生溢出
JAVA程序计算数学表达式 求阶乘
大数阶乘算法思想
编写程序计算1的阶乘加2的阶乘.加到20的阶乘
求大神给个C语言大数阶乘的程序,要有注释的!
求阶乘运算程序内容:从计算机键盘任意输入一个1位十进制数据,要求使用汇编语言编写程序实现计算该数据的阶乘,要求屏幕有提示
求高精度快速大数阶乘算法!1
求大数阶乘的快速算法!急
vf 程序计算用vf写一个计算阶乘自定义函数,计算:/n!(m-n)!
用matlab,写阶乘,双阶乘程序