use strict; use POSIX; sub cf{ my($v,$p) = @_; my $i=int $v; $v -= $i; if( fabs($v)>$p ){ my($a,$n,$d)=cf(1/$v,$p*(1+abs$i)); return $i,$d,$a*$d+$n }else{ return $i,0,1; } } while( ){ chomp; my ($i,$n,$d) = cf($_,.001); $n+=$i*$d; print "$_:\t$n/$d\n"; } __DATA__ 0.035 0.037 0.039 0.041 0.043 0.046 0.048