aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-05-16 19:04:53 +0100
committerGitHub <noreply@github.com>2021-05-16 19:04:53 +0100
commit9efdc231a367b878338e0bc081ead7d1effc01e8 (patch)
tree7e48e050ad5ef645751c5dcbab4cadec10592452
parentc81618d0a47971c5b1513b511f8e2e6f066e3246 (diff)
parentd8802f67713951c792b85c955fc1b03526424af9 (diff)
downloadperlweeklychallenge-club-9efdc231a367b878338e0bc081ead7d1effc01e8.tar.gz
perlweeklychallenge-club-9efdc231a367b878338e0bc081ead7d1effc01e8.tar.bz2
perlweeklychallenge-club-9efdc231a367b878338e0bc081ead7d1effc01e8.zip
Merge pull request #4082 from lakpatashi/challenge-022
Finished challenge-022 ch-1 only with perl
-rw-r--r--challenge-022/lakpatashi/README1
-rwxr-xr-xchallenge-022/lakpatashi/perl/ch-1.pl58
2 files changed, 59 insertions, 0 deletions
diff --git a/challenge-022/lakpatashi/README b/challenge-022/lakpatashi/README
new file mode 100644
index 0000000000..bc153bd576
--- /dev/null
+++ b/challenge-022/lakpatashi/README
@@ -0,0 +1 @@
+Solution by lakpatashi
diff --git a/challenge-022/lakpatashi/perl/ch-1.pl b/challenge-022/lakpatashi/perl/ch-1.pl
new file mode 100755
index 0000000000..d6108c3fbb
--- /dev/null
+++ b/challenge-022/lakpatashi/perl/ch-1.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+use POSIX;
+use strict;
+use warnings;
+use List::Util qw( min max sum);
+use feature qw(switch);
+
+my $m = 1000; # max value for prime list
+my @primes = buildPrimes($m);
+
+my ($first,$second,$count) = (0,1,0);
+for $first (0..$#primes-1){
+ #print "$first ";
+ my $diff = $primes[$second] - $primes[$first];
+ last if $second == $#primes or $count==6;
+ #print "$primes[$first] $primes[$second] :: ";
+
+ given($diff){
+ when(6){
+ print "$primes[$first] $primes[$second]\n";
+ #print "ok\n";
+ $first++;
+ $second++;
+ $count++;
+ }
+ when($diff<6){
+ $second++;
+ }
+ default{
+ $first++;
+ }
+ }
+}
+
+sub buildPrimes{ # building prime list
+ my $m=shift;
+ my @prime = (1)x($m+1);
+ @prime[0,1]=(0)x2;
+ for (my $p=2; $p*$p <= $m; $p++){
+ if($prime[$p]==1){
+ for(my $i= $p*$p; $i<= $m; $i+=$p){
+ $prime[$i]=0;
+ }
+ }
+ }
+ @prime = grep{ $prime[$_] } 2..$m;
+ return @prime;
+}
+
+sub isPrime{ # check primality
+ my $n = shift;
+ my $nSq = sqrt $n;
+ for my $i (@primes){
+ last if $i>$nSq;
+ return 0 unless $n % $i;
+ }
+ return 1;
+}