From 910b24fd10c1075640f1fbbbafac0b33b779e363 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 19 May 2009 23:28:39 -0500 Subject: solved 47 --- 047.pl | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 047.pl diff --git a/047.pl b/047.pl new file mode 100755 index 0000000..2f15475 --- /dev/null +++ b/047.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl +use strict; +use warnings; +use integer; +use Math::Prime::XS qw/sieve_primes/; +use List::MoreUtils qw/all uniq/; +use 5.010; + +my @primes = sieve_primes(1e6); +my %primes = map { $_, 1 } @primes; +my %factors; + +sub factors { + my ($n_orig) = @_; + my @ret; + my $prime_idx = 0; + my $n = $n_orig; + while ($n > 1) { + if (exists $factors{$n}) { + push @ret, @{ $factors{$n} }; + last; + } + if (exists $primes{$n}) { + push @ret, $n; + last; + } + my $prime = $primes[$prime_idx]; + if (($n / $prime) * $prime == $n) { + $n /= $prime; + push @ret, $prime; + } + else { + $prime_idx++; + } + } + $factors{$n_orig} = \@ret; + return @ret; +} + +map { factors($_) } 1..1000000; + +for my $n (0..999996) { + if (all { $_ >= 4 } map { scalar uniq @$_ } @factors{$n..($n + 3)}) { + print $n + 1, "\n"; + last; + } +} -- cgit v1.2.3