601 Divisibility streaks.pl6 385 B

1234567891011121314151617181920
  1. #!/usr/bin/perl6
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 30 April 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=601
  7. # Runtime: 0.232s
  8. sub count($n, $k) {
  9. my $lcm = [lcm] 1..$n;
  10. my $period = ([lcm] ($lcm, $n+1)) / $lcm;
  11. my $count = floor(($k-2) / $lcm);
  12. $count - floor($count / $period);
  13. }
  14. say [+] (1..31).map: { count($_, 4**$_) };