#!/usr/bin/perl use strict; use warnings; use bignum ( p => -9999 ); # this is huge, by the way my $limit = shift; # 1000 for project euler my $longest = 1; my $value; for my $val (1..$limit) { my $frac = 1/$val; if (reverse($frac) =~ /(\d+)\1+/) { my $longestSubChain = reverse($1); if ($longestSubChain =~ /(\d+?)\1+/) { if (length($1) > $longest) { $longest = length($1); $value = $val; } } } } print "d = $value\n"; print "Longest recurring cycle: $longest";