require Math::BigFloat; @vals = (); %valhash = (); for ($i = 1; $i <= 1000; $i++) { #$q = 1.00 / ($i); $r = find_digits($i); if ($valhash{$r} eq '') { push(@vals,$r); } $valhash{$r} = $valhash{$r} . ";" . $i; } @vals = sort {$a <=> $b} @vals; foreach $l (@vals) { print "$l: $valhash{$l}\n"; } sub find_digits { my ($d) = @_; $nmax = 40000; $x = Math::BigFloat->new(1); $res = $x->copy()->bdiv($d,$nmax+1)->bstr(); chop($res); if($res =~ /([0-9]+?)\1\1/) { return length($1); } else { return 0; } }