1. 程式人生 > >《程式設計師的演算法趣題》-(日)增井敏克 Python解題 -- (Q12)

《程式設計師的演算法趣題》-(日)增井敏克 Python解題 -- (Q12)

《程式設計師的演算法趣題》-(日)增井敏克 , 書中為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