作业帮 > 综合 > 作业

用Pascal求n!的位数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/28 13:44:04
用Pascal求n!的位数
公式+程序+注释(就是每一步对应公式里的哪一部分)
n最大会是10^7,要求在1秒之内搞定,先求出n!再求位数的方法应该是不能完成的.
所谓某数的位数 就是此数的常用对数取上界(或者说能用一个小于10的数乘以几个十得到!)
比如
1000!的位数可以表示为lg(1000!)这个高中数学竞赛能学到
lg(1000!)=lg1000+lg999+……lg(1)+1取下界
pascal程序如下,仅供参考,调用了math库
program njiecheng;
uses math;
var i,n:integer;
result:float;
begin
readln(n);
result:=0;
for i:=1 to n do //n!的位数=西格玛(1到n)再加1!
begin
result:=result+log10(i);
end;
result:=result+1;
writeln(trunc(result));//实际得取下界
readln;
end.
求log10(1000!)就是1000!的结果的位数