使用Frazer Jarvis: Square roots by subtraction算法用Python快速计算一个平方根是无理数的小数

jiafengfu 2019-01-25 10:17:24


# 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代码实现和解析)
...全文
88 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧