2014-09-01 55 views

回答

1

我認爲沒有構建方法可以做到這一點。

但是你可以自己寫一個腳本。
字段F有兩個操作,加法(+)和乘法(*)。首先,您必須指定是否想知道組(F,+)或組(F \ {0}, *)中元素g的順序。

  1. 查找(F,+)g順序:
    這是容易的情況下,由於該組中的每個元素的順序爲p,如果字段具有p個元件。

  2. 尋找g的訂單(F \ {0}, *)
    這是一個硬點。中的g的順序也被稱爲discrete logarithm。基本上,您可以嘗試每個k = 1,...,p m。但是這需要一段時間。一個簡單的方法是Baby-step giant-step算法。 我從來沒有嘗試過,但你也可以看看使用NTL的this discrete logarithm implementation

+0

非常感謝親愛的AbcAeffchen,其實我知道,這個功能是聖人,帕裏/ GP和Magma就緒(內置),那些使用NTL庫。不知何故,我必須以可靠的方式(編碼!)在NTL中獲得答案。現在我試圖在C/C++中調用它們的函數並使用結果,但這不是一件容易的事情! – 2014-09-02 05:15:18

+0

如果你想用NTL計算離散對數,你應該看看Baby-step巨步算法。它很簡單,並且有組,沒有更快的算法是已知的。 – AbcAeffchen 2014-09-02 08:34:36