From 9d2de008f04860056bb23509a008880f80a031c3 Mon Sep 17 00:00:00 2001 From: Ben Davies Date: Mon, 4 Oct 2021 20:00:22 -0300 Subject: Optimize Ben Davies' challenge 133 task 2 solution &prime-factors is eager to invoke Int.is-prime; cache an infinite sequence of primes so it gets called once per prime max. --- challenge-133/ben-davies/raku/ch-2.raku | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/challenge-133/ben-davies/raku/ch-2.raku b/challenge-133/ben-davies/raku/ch-2.raku index ba862a20e4..831d18bda1 100644 --- a/challenge-133/ben-davies/raku/ch-2.raku +++ b/challenge-133/ben-davies/raku/ch-2.raku @@ -9,5 +9,6 @@ sub digits(Int:D $x, Int:D $base) { $x.polymod($base xx $x.log: $base).reverse } sub prime-factors(Int:D $x is copy) { - gather $x div= take (2..$x).grep(*.is-prime).first($x %% *) while $x > 1 + state Int:D @primes = (2..*).grep(*.is-prime); + gather $x div= take @primes.first($x %% *) while $x > 1 } -- cgit