勵志

勵志人生知識庫

原根怎么求

求一箇數的原根的步驟通常包括以下幾個部分:

定義和基本概念理解。原根是指對於一箇正整數 \( m \),若整數 \( a \) 模 \( m \) 的階等於 \( \varphi(m) \)(其中 \( \varphi \) 是 \( m \) 的歐拉函數),則稱 \( a \) 爲模 \( m \) 的一箇原根。階是指滿足 \( a^d \equiv 1 \pmod{m} \) 的最小正整數 \( d \),其中 \( a \) 和 \( m \) 互質。

預處理。首先需要計算出 \( m \) 的歐拉函數值 \( \varphi(m) \),並分解 \( \varphi(m) \) 的質因數。

判斷 \( m \) 是否有原根。根據數的性質,模 \( m \) 有原根的充要條件是 \( m = 1, 2, 4, p, 2p, p^n \),其中 \( p \) 是奇質數,\( n \) 是任意正整數。

求最小原根。從 \( 1 \) 開始枚舉,對於每個與 \( m \) 互質的數 \( i \),計算 \( i^{\frac{\varphi(m)}{p_j}} \pmod{m} \),其中 \( p_j \) 是 \( \varphi(m) \) 的質因數。如果不存在任何一箇數等於 \( 1 \),則 \( i \) 是原根。如果存在,則繼續枚舉下一個數。

求所有原根。如果找到了一箇原根 \( i \),那麼其他所有原根可以通過計算 \( i^k \pmod{m} \),其中 \( k \) 是 \( m \) 的正整數因子(除了 \( 1 \) 和 \( m \))來得到。

需要注意的是,這個過程可能涉及到較大的數和複雜的計算,因此在實現時可能需要考慮優化和高效的算法。