#!/usr/bin/env perl use strict; use warnings; use List::Util qw(all); my $n = 600851475143; # Functional # Imperative my @primes; my $last_factor; for my $i (2 .. $n) { if ($i > $n) { last; } if (all { $i % $_ != 0 } @primes) { push(@primes, $i); if ($n % $i== 0) { $n = $n / $i; $last_factor = $i; redo; } } } print "$last_factor\n";