簡體   English   中英

有什么辦法可以增加蟒蛇的無限極限嗎?

[英]Is there any way to increase pythons infinity limit?

我正在做https://projecteuler.net/problem=57我得到分子和分母,如果分子長於分母,我在總數中加一。

然而,在某一時刻(在 n=805 以上),分子和分母變得如此之大,以至於 python 將它們轉換為無窮大。 如果你想測試它,這是我的代碼。

def sqrt_2(max_iteration, total = 0, previous_numerator = 1, previous_denominator = 2, iteration = 1):
    
    numerator_test = previous_numerator + previous_denominator
    denominator_test = previous_denominator
    print(numerator_test, denominator_test, numerator_test / denominator_test)
    if len(str(numerator_test)) > len(str(denominator_test)):
        total += 1
    
    if iteration == max_iteration:
        return total
    
    next_value_numerator = 1 * previous_denominator
    next_value_denominator = int(( 2 + (previous_numerator / previous_denominator) ) * previous_denominator)
    
    return sqrt_2(max_iteration, total, next_value_numerator, next_value_denominator, iteration + 1)
            


print("\n", sqrt_2(806))

有什么辦法可以增加這個無窮大嗎? 806真的很接近1000。如果和IDE / Python版本有什么關系,我用的是Spyder 5.0和Z23EEEB4347BDD756BFC6B7EE9A33

提前致謝!

您不能在此處使用浮點運算。 浮點支持有限數量的有效數字(17 或一些這樣的數字)。 當代碼除以數字時,結果是一個浮點數,很快(迭代 25 次或類似的迭代)將沒有足夠的精度將其表示為float

實際發生的是你的數字變得如此之大, float甚至不能代表它們的指數,並且溢出到無窮大。 但這不重要,因為數字在溢出之前很久就錯了。

您需要的是一種算法,它只使用 integer 運算(如加法和乘法)計算分子和分母,沒有除法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM