diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2019-08-29 21:41:56 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2019-08-29 21:41:56 +1000 |
| commit | e917e064b2cb0c672c7a20fa2cb2f583bbe742b3 (patch) | |
| tree | e4a60f536dbcb68a88a9a829f651664c6e799c2b | |
| parent | 6f2acf2eaca534ff5656b82f051702beb7b1a14f (diff) | |
| download | perlweeklychallenge-club-e917e064b2cb0c672c7a20fa2cb2f583bbe742b3.tar.gz perlweeklychallenge-club-e917e064b2cb0c672c7a20fa2cb2f583bbe742b3.tar.bz2 perlweeklychallenge-club-e917e064b2cb0c672c7a20fa2cb2f583bbe742b3.zip | |
Added ch-2 p5 and p6 solutions
| -rwxr-xr-x | challenge-023/ruben-westerberg/perl5/ch-2.pl | 37 | ||||
| -rwxr-xr-x | challenge-023/ruben-westerberg/perl6/ch-2.p6 | 22 |
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; +} |
