Divisibility streaks
Author: Shlomi Fish
http://projecteuler.net/problem=601
Usage
Source code: prob601-shlomif.p6
use v6; sub calc_P($s, $N) { my int $l = [lcm] 1 .. $s; my int $i = 0; my int $ret = 0; my int $t = $s + 1; my int $M = $N - 1; while (($i = $i + $l) < $M) { ++$ret if $i % $t; } return $ret; } sub print_P($s, $N) { my $ret = calc_P($s, $N); say "calc_P(s=$s, N=$N) = $ret"; return $ret; } sub MAIN(Bool :$verbose = False) { print_P(3, 14); print_P(6, 10**6); print_P(2, 4**2); my $mysum = 0; my $p = 4; for 1 .. 31 -> $i { $mysum += print_P($i, $p); say "mysum($i) = $mysum"; $p *= 4; } }