diff options
| author | Randy Lauen <randy.lauen@gmail.com> | 2019-08-28 20:34:58 -0500 |
|---|---|---|
| committer | Randy Lauen <randy.lauen@gmail.com> | 2019-08-28 20:34:58 -0500 |
| commit | 0b6f3d1ba100c5b7c9d8048e76bb4682188e17ab (patch) | |
| tree | 419ee0e20883ade4aaa44a0fd4177ac6fcfd0fa0 | |
| parent | 6afc92bb1d9f1a4444bda22f20bbb173ab2a02aa (diff) | |
| download | perlweeklychallenge-club-0b6f3d1ba100c5b7c9d8048e76bb4682188e17ab.tar.gz perlweeklychallenge-club-0b6f3d1ba100c5b7c9d8048e76bb4682188e17ab.tar.bz2 perlweeklychallenge-club-0b6f3d1ba100c5b7c9d8048e76bb4682188e17ab.zip | |
tests
| -rw-r--r-- | challenge-023/randy-lauen/perl6/ch-2.p6 | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/challenge-023/randy-lauen/perl6/ch-2.p6 b/challenge-023/randy-lauen/perl6/ch-2.p6 index 3669bfafa6..c5a5c1bd5c 100644 --- a/challenge-023/randy-lauen/perl6/ch-2.p6 +++ b/challenge-023/randy-lauen/perl6/ch-2.p6 @@ -8,24 +8,24 @@ defined as a list of prime numbers which when all multiplied together, are equal the Prime decomposition of 228 is 2,2,3,19 as 228 = 2 * 2 * 3 * 19. Usage: - $ perl6 ch-2.p6 228 - $ perl6 ch-2.p6 --test + $ perl6 ch-2.p6 228 # print out prime factors + $ perl6 ch-2.p6 --test # test results against Prime::Factor Notes: I used the algorithm described here: https://www.geeksforgeeks.org/print-all-prime-factors-of-a-given-number/ =end SYNOPSIS -sub my-prime-factors( $n is copy ) { +sub my-prime-factors( Int $n is copy ) { my @factors; while $n %% 2 { @factors.push: 2; - $n /= 2; + $n = ($n / 2).Int; } for 3, 5 ... sqrt($n) -> $i { while $n %% $i { @factors.push: $i; - $n /= $i; + $n = ($n / $i).Int; } } @factors.push: $n if $n > 2; @@ -45,9 +45,15 @@ multi MAIN( Int $input where * > 0 ) { multi MAIN( Bool :$test! ) { use Test; - for 1 .. 1000 -> $n { - say "$n: " ~ my-prime-factors($n).join(', '); - } + use Prime::Factor; + + plan 1; + + my $max = 10_000; + my %mine = hyper for 1 .. $max { $_ => my-prime-factors($_).List }; + my %expected = hyper for 1 .. $max { $_ => prime-factors($_).List }; + + is-deeply( %mine, %expected, "all prime factors up to $max match" ); } |
