以下是對此處找到的用于計算算術導數的 Python 代碼的重構。
from sympy import factorint
def f(n):
result = factorint(n)
result = result.items()
result = [int(n*e/p) for p, e in result]
result = sum(result)
result = result if n > 1 else 0
return result
可以證明,引數對其自身冪的算術導數將是一個不動點。如果您認為這就是問題所在,請隨時仔細檢查證明。
A051674是素數以通常的素數順序排列的素數序列。其中有 827240261886336764177,但是當我在上面呼叫上面的函式時,我沒有得到正確的結果:
>>> f(827240261886336764177)
827240261886336827392
事實上,將 f 評估的所有列出的序列成員串列顯示在該作業之前的條目以及該中斷之后的條目。
| p_n | f(p_n) |
|---|---|
| 4 | 4 |
| 27 | 27 |
| 3125 | 3125 |
| 823543 | 823543 |
| 285311670611 | 285311670611 |
| 302875106592253 | 302875106592253 |
| 827240261886336764177 | 827240261886336827392 |
| 1978419655660313589123979 | 1978419655660313627328512 |
| 20880467999847912034355032910567 | 20880467999847910614749358850048 |
| 2567686153161211134561828214731016126483469 | 2567686153161211279596267358657515496669184 |
所以看起來數字變得太大可能是一個問題。為什么此功能在這些較大的情況下會失敗?
uj5u.com熱心網友回復:
如果您正在處理整數,請嘗試僅使用整數運算。由于在行
result = [int(n*e/p) for p, e in result]
n,e并且p是整數(int型別),只需寫n*e//p而不是int(n*e/p).
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480077.html
上一篇:從面法線檢索物件旋轉
下一篇:C#舍入并轉換為單位
