# Python 代码
def getIrrationalSquareRootsDecimalDigits(n, max_size=100):
""" Frazer Jarvis: Square roots by subtraction """
a, b = 5*n, 5
while len(str(b)) < max_size:
if a >= b:
a, b = a-b, b+10 # R1
else: # (a < b)
a, b = a*100, (b-b%10)*10+5 # R2
numOfDigitsOfIntegerPart = len(str(int(n**0.5)))
print('√%d = ' %n, end='')
for index, digit in enumerate(list(map(int, str(b))), 1):
print(digit, end='')
if index == numOfDigitsOfIntegerPart:
print('.', end='')
print(' (%d digits)'% max_size)
def main():
for n in range(2, 100):
if (n**0.5) % 1 != 0.0:
getIrrationalSquareRootsDecimalDigits(n, 110)
if __name__ == '__main__':
main()
可以参考
Project Euler Problem 80 (C++和Python代码实现和解析)