use Math::BigFloat; $s = 0; for ($i = 1; $i <= 100; $i++) { if (sqrt($i) != int(sqrt($i))) { my $x = Math::BigFloat->new($i); $x->div_scale(120); $y = $x->bsqrt(); #$y = $y->bsub(int(sqrt($i))); $s += digital_sum($y); } } print "\n" . $s . "\n"; sub digital_sum { my ($n) = @_; $n = '' . $n; my $ms = 0; return 0 if (length($n) < 100); for ($p = 0; $p <= 100; $p++) { my $c = substr($n,$p,1); $ms += substr($n,$p,1) if ($c =~ /^[0-9]$/); #print $c; } return $ms; }