《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~
在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6)
Q12 平方根数字
求在计算平方根的时候,最早让 0~9 的数字全部出现的最小整数。注意这里只求平方根为正数的情况,并且请分别求包含整数部分的情况和只看小数部分的情况。
例) 2的平方根 :1.414213562373095048… (0 ~ 9全部出现需要19位)
import math
result = 1
while True:
str_cal = "%.10f" % math.sqrt(result)
str_cal = str_cal.replace('.', '')
number_set = set()
for number in str_cal[:10]:
if number in number_set:
break
else:
number_set.add(number)
if len(number_set) == 10:
print("含整数部分的最小整数为: %s" % result)
break
result += 1
result = 1
while True:
str_cal = "%.10f" % math.sqrt(result)
split_part = str_cal.split('.')
if len(split_part) > 1:
number_list = set([int(i) for i in split_part[1]])
if len(number_list) == 10:
print("只看小数部分的最小整数为: %s" % result)
break
result += 1
运行结果:
含整数部分的最小整数为: 1362
只看小数部分的最小整数为: 143