diff options
| -rwxr-xr-x | challenge-139/perlboy1967/perl/ch-2.pl | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/challenge-139/perlboy1967/perl/ch-2.pl b/challenge-139/perlboy1967/perl/ch-2.pl deleted file mode 100755 index d065fe75e3..0000000000 --- a/challenge-139/perlboy1967/perl/ch-2.pl +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/perl - -=pod - -The Weekly Challenge - 139 - - https://perlweeklychallenge.org/blog/perl-weekly-challenge-139/#TASK2 - -Author: Niels 'PerlBoy' van Dijke - -Write a script to generate first 5 Long Primes. - - || A prime number (p) is called Long Prime if (1/p) has an infinite decimal - || expansion repeating every (p-1) digits. - -=cut - -use v5.16; -use strict; -use warnings; - -use Math::Prime::XS qw(is_prime); - - -# Re-usage of code week 106, task #2 -sub repeatedDivDigits { - my ($d) = @_; - my ($n,$result) = (1,''); - - my %rSeen; - my $r = $n; - - # Let's do a 'long div' and track if the - # remainder becomes zero or if we've seen - # a numerator before - - do { - $n = $r; - - while ($n < $d) { - $n .= '0'; - $result .= '0' if ($n < $d); - } - - push(@{$rSeen{$n}}, length($result)); - - $result .= int($n/$d) - if (scalar(@{$rSeen{$n}}) < 2); - - $r = $n % $d; - - } while ($r != 0 and scalar(@{$rSeen{$n}} < 2)); - - # Non repetitative division? - return '' if ($r == 0); - - if ($result =~ m#([0]+)$#) { - $rSeen{$n}[0] -= length($1); - $rSeen{$n}[1] -= length($1); - } - - return substr($result, - $rSeen{$n}[0], - $rSeen{$n}[1] - $rSeen{$n}[0]); -} - -my @primes; - -my $i = 1; -while (scalar(@primes) < 5) { - push(@primes,$i) - if (is_prime($i) and length(repeatedDivDigits($i)) == $i-1); - $i++ -} - -printf "%s\n",join("\n",@primes); - |
