aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime <42359730+bracteatus@users.noreply.github.com>2019-06-14 06:33:25 -0600
committerJaime <42359730+bracteatus@users.noreply.github.com>2019-06-14 06:33:25 -0600
commitb3aeb665d757158d9c558169b9d791537cb44f96 (patch)
treefb52a9f972ec5f7d69508c4c9dd857dad699257d
parent102c2efaaf6504f06120cb03f537e1964b229ead (diff)
downloadperlweeklychallenge-club-b3aeb665d757158d9c558169b9d791537cb44f96.tar.gz
perlweeklychallenge-club-b3aeb665d757158d9c558169b9d791537cb44f96.tar.bz2
perlweeklychallenge-club-b3aeb665d757158d9c558169b9d791537cb44f96.zip
Update ch-1.pl
Iterate primorial numbers to find the first Euclid number that is not prime.
-rw-r--r--challenge-012/jaime/perl5/ch-1.pl16
1 files changed, 16 insertions, 0 deletions
diff --git a/challenge-012/jaime/perl5/ch-1.pl b/challenge-012/jaime/perl5/ch-1.pl
index 3ecead2762..935c585fd5 100644
--- a/challenge-012/jaime/perl5/ch-1.pl
+++ b/challenge-012/jaime/perl5/ch-1.pl
@@ -6,3 +6,19 @@
# primes are called the Euclid Numbers (see wiki). Write a script that
# finds the smallest Euclid Number that is not prime.
+sub is_prime { # is a given positive integer an odd prime?
+ my ($n) = @_;
+ for (my $i = 3; $i < $n; $i += 2) { # determine if odd number is prime.
+ return 0 unless $n % $i;
+ }
+ return 1; # odd number is prime.
+}
+
+my $p = 2; # start with second primorial
+for (my $i = 3; ;$i += 2) {
+ next unless is_prime $i;
+ $p *= $i; # next primorial
+ last unless is_prime 1+$p;
+}
+
+print 1+$p;