aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2019-08-29 21:41:56 +1000
committerRuben Westerberg <drclaw@mac.com>2019-08-29 21:41:56 +1000
commite917e064b2cb0c672c7a20fa2cb2f583bbe742b3 (patch)
treee4a60f536dbcb68a88a9a829f651664c6e799c2b
parent6f2acf2eaca534ff5656b82f051702beb7b1a14f (diff)
downloadperlweeklychallenge-club-e917e064b2cb0c672c7a20fa2cb2f583bbe742b3.tar.gz
perlweeklychallenge-club-e917e064b2cb0c672c7a20fa2cb2f583bbe742b3.tar.bz2
perlweeklychallenge-club-e917e064b2cb0c672c7a20fa2cb2f583bbe742b3.zip
Added ch-2 p5 and p6 solutions
-rwxr-xr-xchallenge-023/ruben-westerberg/perl5/ch-2.pl37
-rwxr-xr-xchallenge-023/ruben-westerberg/perl6/ch-2.p622
2 files changed, 59 insertions, 0 deletions
diff --git a/challenge-023/ruben-westerberg/perl5/ch-2.pl b/challenge-023/ruben-westerberg/perl5/ch-2.pl
new file mode 100755
index 0000000000..977635f409
--- /dev/null
+++ b/challenge-023/ruben-westerberg/perl5/ch-2.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use v5.26;
+
+my $i=0;
+my @primes;
+my @factors;
+my $value=my $number=$ARGV[0];
+while (1) {
+ push(@primes, nextPrime()) if $i >= @primes;
+ last if $primes[$i]>$value;
+ if ($value%$primes[$i]==0) {
+ $value/=$primes[$i];
+ push @factors, $primes[$i];
+ $i=0;
+ }
+ else {
+ $i++;
+ }
+}
+print "Prime decomposition of $number: ",join " ", @factors if @factors >1;
+print "No decomposition for $number\n" if @factors ==1;
+sub nextPrime {
+ state $t=1;
+ while (1) {
+
+ $t++;
+ my $sum=0;
+ for (1..(int $t/2)) {
+ $sum++ if $t % $_ == 0;
+ last if $sum >1;
+ }
+ last if $sum==1;
+ }
+ $t;
+}
diff --git a/challenge-023/ruben-westerberg/perl6/ch-2.p6 b/challenge-023/ruben-westerberg/perl6/ch-2.p6
new file mode 100755
index 0000000000..08a94c9ec1
--- /dev/null
+++ b/challenge-023/ruben-westerberg/perl6/ch-2.p6
@@ -0,0 +1,22 @@
+#!/usr/bin/env perl6
+
+
+sub MAIN($number) {
+ my $primes=(0..*).grep({.is-prime}).cache;
+ my @factors;
+ my $i=0;
+ my $value=$number;
+ loop {
+ if $value%%$primes[$i] {
+ $value/=$primes[$i];
+ @factors.push: $primes[$i];
+ $i=0;
+ }
+ else {
+ $i++;
+ }
+ last if $primes[$i]>$value;
+ }
+ put "Prime decomposition of $number: @factors[]" if @factors >1;
+ put "No decomposition for $number" if @factors ==1;
+}