題目鏈結
因為最小原根都不大,可以考慮暴力列舉去驗證。
對於乙個奇質數p
pp,可以先對(p−
1)
(p-1)
(p−1
)質因數分解為(p−
1)=p
1a1p
2a2p
3a3.
...p
ta
t(p-1) = p_1^p_2^p_3^....p_t^
(p−1)=
p1a1
p2
a2
p3a3
..
..pt
at
對於列舉的數g
gg,若恒有g(p
−1)/
pi≠1
(mod
p)
g^ \neq 1(mod\ p)
g(p−1)
/pi
̸=1
(mod
p)則g
gg為p
pp的原根。
**:
#include#include#includeusing namespace std;
typedef long long ll;
const int a = 1e4 + 10;
int q[a];
int pow(ll a,int b,int p)
return t;
}int get_g(int n)
}if(tem>1) q[t++] = tem;
for(i=2;;i++)
}int main()
51nod 1135 求原根 板子
1135 原根 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 設m是正整數,a是整數,若a模m的階等於 m 則稱a為模m的乙個原根。其中 m 表示m的尤拉函式 給出1個質數p,找出p最小的原根。input 輸入1個質數p 3 p 10 9 output 輸出p最小的原根...
編乙個程式求質數的和
編乙個程式求質數的和,例如f 7 2 3 5 7 11 13 17 58。方法1 對於從2開始的遞增整數n進行如下操作 用 2,n 1 中的數依次去除n,如果餘數為0,則說明n不是質數 如果所有餘數都不是0,則說明n是質數,對其進行加和。空間複雜度為o 1 時間複雜度為o n 2 其中n為需要找到的...
如何求乙個組合數的除以乙個質數的餘數
leetcode上的1223題 投擲乙個骰子n次,並給出乙個長度為6的陣列,數值不超過15,分別表示1,2,3,4,5,6不能連續出現的次數,求投這n次可能出現的滿足要求的序列的種數。用乙個三維陣列a 6 16 n a 6 16 n a 6 1 6 n 進行動態規劃就可以解決。但是現在加強一下限制,...