diff options
| author | Noud Aldenhoven <noud.aldenhoven@gmail.com> | 2020-01-04 11:03:01 +0100 |
|---|---|---|
| committer | Noud Aldenhoven <noud.aldenhoven@gmail.com> | 2020-01-04 11:03:01 +0100 |
| commit | 3469b83f7fa98f887c79973e498d3138da73e11e (patch) | |
| tree | d9cbaf7e6f4a0dc9f4ef16c25a72efad4402b977 /challenge-041/noud | |
| parent | 7fd8514508842aecb0e6b11dfb12792d9824b420 (diff) | |
| download | perlweeklychallenge-club-3469b83f7fa98f887c79973e498d3138da73e11e.tar.gz perlweeklychallenge-club-3469b83f7fa98f887c79973e498d3138da73e11e.tar.bz2 perlweeklychallenge-club-3469b83f7fa98f887c79973e498d3138da73e11e.zip | |
Solutions to challenge 041 task 1 and 2 in Raku by Noud
Diffstat (limited to 'challenge-041/noud')
| -rw-r--r-- | challenge-041/noud/perl6/ch-1.p6 | 27 | ||||
| -rw-r--r-- | challenge-041/noud/perl6/ch-2.p6 | 24 |
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-041/noud/perl6/ch-1.p6 b/challenge-041/noud/perl6/ch-1.p6 new file mode 100644 index 0000000000..e5bdb8c5df --- /dev/null +++ b/challenge-041/noud/perl6/ch-1.p6 @@ -0,0 +1,27 @@ +# Write a script to display attractive number between 1 and 50. +# +# A number is an attractive number if the number of its prime factors is +# also prime number. +# +# The number 20 is an attractive number, whose prime factors are 2, 2 and 5. +# The total prime factors is 3 which is also a prime number. + + +# From Challenge 023.#2 +sub decomp(Int $n) { + if ($n > 1) { + my $prime = (2..Inf).grep({ $n %% $_ })[0]; + ($prime, |(decomp(($n / $prime).Int))); + } +} + +sub attractive-number(Int $n) { + is-prime(decomp($n).elems); +} + +say "All attractive numbers between 1 and 50:"; +for 1..50 -> $n { + if (attractive-number($n)) { + say $n; + } +} diff --git a/challenge-041/noud/perl6/ch-2.p6 b/challenge-041/noud/perl6/ch-2.p6 new file mode 100644 index 0000000000..acbd775229 --- /dev/null +++ b/challenge-041/noud/perl6/ch-2.p6 @@ -0,0 +1,24 @@ +# Write a script to display first 20 Leonardo Numbers. Please checkout wiki +# page for more information. +# +# For example: +# L(0) = 1 +# L(1) = 1 +# L(2) = L(0) + L(1) + 1 = 3 +# L(3) = L(1) + L(2) + 1 = 5 +# +# and so on. + +# Define a lazy fibonacci sequence. +constant @fib = 0, 1, * + * ... *; + +# Leonard numbers are related to Fibonacci numbers as +# leonard(n) = 2 * fib(n) + 1 +sub leonard(Int $n) { + 2 * @fib[$n] + 1; +} + +say "Leonard numbers 0 to 20:"; +for 0..20 -> $n { + leonard($n).say; +} |
