# schriftliches wurzelziehen: http://www.diaware.de/html/wurzel.html def sqrt(x, accuracy): a = [] # vor komma b = [] # nach komma groups = [] while x > 0: groups.append(x % 100) x /= 100 groups = groups[::-1] result = 0 remainder = 0 while accuracy > 0: group = 100 * remainder if len(groups) > 0: group += groups[0] subcount = 0 sub = 20*result + 1 while sub < group: group -= sub if group < 0: break subcount += 1 sub += 2 remainder = group if subcount == 0: remainder *= 100 result *= 10 result += subcount if len(groups) > 0: a.append(subcount) del groups[0] else: b.append(subcount) accuracy -= 1 return (a, b) squares = set([ x*x for x in range(11) ]) digitsum = 0 for n in xrange(100): if n in squares: continue s = sqrt(n, 100) digitsum += sum(s[0]) + sum(s[1]) print digitsum