Thanks for the welcome, Athanasius. I like what you did with the number separators (600_851_475_143).
#print Dumper \@result;
I'm curious why this dumps the reference to @result. Is there an advantage to this way of doing it?
Lastly, my run at the problem resulted in this code:
use Modern::Perl '2012'; # "All operators (including basic math operations) are overloaded. use bigint lib => 'Calc, GMP'; use Regexp::Common; use Data::Dumper; use List::Util qw/ max /; use Carp qw/ confess /; $SIG{__DIE__} = sub { confess @_; }; sub big_factors { my $n = shift; my @factors = [ ]; my $d = 2; # ensure $n is an integer if ($n !~ /$RE{num}{real}/) { die "Argument was not a real number."; } while ($n > 1) { while ( 0 == $n % $d) { push @factors, $d; $n /= $d; } $d += 1; if ($d**2 > $n) { if ($n > 1) { push @factors, $n; last; } } } return @factors; } my @result = big_factors(600851475143); say max @result;
In reply to Re^2: List::Util can't find max in array of BigInts
by mgatto
in thread List::Utils can't find max in array of BigInts
by mgatto
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |