summaryrefslogtreecommitdiff
path: root/perl/p3.pl
diff options
context:
space:
mode:
Diffstat (limited to 'perl/p3.pl')
-rw-r--r--perl/p3.pl29
1 files changed, 29 insertions, 0 deletions
diff --git a/perl/p3.pl b/perl/p3.pl
new file mode 100644
index 0000000..3caebf2
--- /dev/null
+++ b/perl/p3.pl
@@ -0,0 +1,29 @@
+#!/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";