gpt4 book ai didi

perl - 用所有数字计算 100 阶乘

转载 作者:行者123 更新时间:2023-12-04 09:52:15 24 4
gpt4 key购买 nike

我遇到了计算 100 阶乘的问题。

这是我在 Perl 中首先尝试计算的 100! :

#!/usr/bin/perl

use strict;
use warnings;
use Math::BigInt;

my $n=<>;
chomp($n);
print fac($n);

sub fac
{
my ($m) = @_;

return 1 if($m <=1 );
return $m*fac($m-1);
}

但这给了我 9.33262154439441e+157 .

我需要所有数字的答案。

我该怎么办?

最佳答案

double (大多数 Perls 使用)只有约 16 位的精度。您需要使用另一个系统来获得所需的 158 位精度。

use bigint;

这将导致 Perl 自动将脚本中的所有数字视为 Math::BigInt对象。

如果您需要更好的控制(将一些数字视为 BigInt,将一些数字视为浮点),请参阅 Krishnachandra Sharma 的解决方案并明确使用 Math::BigInt构造函数。
Math::BigInt顺便说一下,有一个内置的阶乘函数:
$ perl -MMath::BigInt -e 'print Math::BigInt->bfac(100)'
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

关于perl - 用所有数字计算 100 阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com