Wolstenholme numbers
use Lingua::EN::Numbers;
sub abbr ($_) { .chars < 41 ?? $_ !! .substr(0,20) ~ '..' ~ .substr(*-20) ~ " (digits: {.chars})" }
my @wolstenholme = lazy ([\+] (1..∞).hyper.map: {FatRat.new: 1, .²}).map: *.numerator;
say 'Wolstenholme numbers:';
printf "%8s: %s\n", .&ordinal-digit(:c), abbr @wolstenholme[$_-1] for flat 1..20, 5e2, 1e3, 2.5e3, 5e3, 1e4;
say "\nPrime Wolstenholme numbers:";
printf "%8s: %s\n", .&ordinal-digit(:c), @wolstenholme.grep(&is-prime)[$_-1]».&abbr for 1..15;
Output:
Wolstenholme numbers:
1st: 1
2nd: 5
3rd: 49
4th: 205
5th: 5269
6th: 5369
7th: 266681
8th: 1077749
9th: 9778141
10th: 1968329
11th: 239437889
12th: 240505109
13th: 40799043101
14th: 40931552621
15th: 205234915681
16th: 822968714749
17th: 238357395880861
18th: 238820721143261
19th: 86364397717734821
20th: 17299975731542641
500th: 40989667509417020364..48084984597965892703 (digits: 434)
1,000th: 83545938483149689478..99094240207812766449 (digits: 866)
2,500th: 64537911900230612090..12785535902976933153 (digits: 2164)
5,000th: 34472086597488537716..22525144829082590451 (digits: 4340)
10,000th: 54714423173933343999..49175649667700005717 (digits: 8693)
Prime Wolstenholme numbers:
1st: 5
2nd: 266681
3rd: 40799043101
4th: 86364397717734821
5th: 36190908596780862323..79995976006474252029 (digits: 104)
6th: 33427988094524601237..48446489305085140033 (digits: 156)
7th: 22812704758392002353..84405125167217413149 (digits: 218)
8th: 28347687473208792918..45794572911130248059 (digits: 318)
9th: 78440559440644426017..30422337523878698419 (digits: 520)
10th: 22706893975121925531..02173859396183964989 (digits: 649)
11th: 27310394808585898968..86311385662644388271 (digits: 935)
12th: 13001072736642048751..08635832246554146071 (digits: 984)
13th: 15086863305391456002..05367804007944918693 (digits: 1202)
14th: 23541935187269979100..02324742766220468879 (digits: 1518)
15th: 40306783143871607599..58901192511859288941 (digits: 1539)
Last updated