51nod 1135 原根問題

2021-08-08 10:50:27 字數 983 閱讀 6689

基準時間限制: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最小的原根。

input示例

3 output示例

2參考**參考逐夢者

#include 

#include

#define _max 10000005

int p, tot;

int a[_max];

//已知質數p,無論g為何值,在指數為p-1時結果均為成立,

//如果指數不為p-1時也想滿足g^i = 1(mod p),則該指數一定是p-1的因子

//並且指數要小於sqrt(p-1)

void store()

while (now % i == 0)

}if (now != 1)

return ;

}//快速冪取模p

long

long qpow(long

long x, long

long n)

n >>= 1;

x = x * x % p;

}return ret;

}//檢測是否滿足g^i = 1(mod p)當且僅當指數為p-1時成立,0//因為p為質數,所以可以肯定,無論g為什麼,當指數為p-1時一定成立,省去判斷

//只需要判斷其他情況不等於1

int check(int g)

}return1;}

//封裝函式,1int solve()

}return0;}

int main()

return

0;}

原根 51nod 1135(原根)

設m是正整數,a是整數,若a模m的階等於 m 則稱a為模m的乙個原根。其中 m 表示m的尤拉函式 給出1個質數p,找出p最小的原根。input 輸入1個質數p 3 p 10 9 output 輸出p最小的原根。sample input 3sample output 2題意 求乙個質數的最小原根 分析...

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最小的原根...

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

題目鏈結 因為最小原根都不大,可以考慮暴力列舉去驗證。對於乙個奇質數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,若恒有...