#!/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) { last if ($i > $n); if (all { $i % $_ != 0 } @primes) { if ($n % $i == 0) { $n /= $i; $last_factor = $i; redo; } push(@primes, $i); } } print "$last_factor\n";