51Nod 1135 求乙個奇質數的最小原根

2021-08-07 20:26:12 字數 834 閱讀 5163

題目鏈結

因為最小原根都不大,可以考慮暴力列舉去驗證。

對於乙個奇質數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 進行動態規劃就可以解決。但是現在加強一下限制,...