RosettaCodeData/Task/Modular-exponentiation/Perl/modular-exponentiation.pl

19 lines
421 B
Perl
Raw Permalink Normal View History

2013-04-10 21:29:02 -07:00
use bigint;
2019-09-12 10:33:56 -07:00
sub expmod {
my($a, $b, $n) = @_;
my $c = 1;
do {
($c *= $a) %= $n if $b % 2;
($a *= $a) %= $n;
} while ($b = int $b/2);
$c;
}
2013-04-10 21:29:02 -07:00
my $a = 2988348162058574136915891421498819466320163312926952423791023078876139;
my $b = 2351399303373464486466122544523690094744975233415544072992656881240319;
my $m = 10 ** 40;
2019-09-12 10:33:56 -07:00
print expmod($a, $b, $m), "\n";
2013-04-10 21:29:02 -07:00
print $a->bmodpow($b, $m), "\n";