原根 51nod 1135(原根)

2021-08-22 17:51:44 字數 1155 閱讀 8263

設m是正整數,a是整數,若a模m的階等於φ(m),則稱a為模m的乙個原根。(其中φ(m)表示m的尤拉函式)

給出1個質數p,找出p最小的原根。

input

輸入1個質數p(3 <= p <= 10^9)

output

輸出p最小的原根。

sample input

3
sample output

2
題意:

求乙個質數的最小原根

分析:求模素數p原根的方法:

對p-1素因子分解,即p−

1=pa

11pa

22⋯p

akk p−1

=p1a

1p2a

2⋯pk

ak

若恒有gp−

1p1≠

1(mo

dp) gp−

1p1≠

1(mo

dp

)成立,則g就是模p的原根。(對於合數求原根,只需要把p-1換成ϕ(

p)ϕ (p

)即可)

對於這道題,從2到p-1列舉g即可

code:

#include 

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int maxn = 1e5+10;

bool isprime[maxn];

int prime[maxn],cnt;

void init()}}

}int p[maxn],num;

void divide(int n)

}if(n > 1) p[num++] = n;

}ll q_pow(ll a,ll b,ll mod)

return ans;

}bool judge(ll tmp,ll p)

return

true;

}int main()}}

return

0;}

51nod 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最小的原根。i...

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

1135 原根(概念)

設m是正整數,a是整數,若a模m的階等於 m 則稱a為模m的乙個原根。其中 m 表示m的尤拉函式 給出1個質數p,找出p最小的原根。輸入輸入1個質數p 3 p 10 9 輸出輸出p最小的原根。輸入樣例 3輸出樣例 2a是p的原根滿足 p 1的所有質因子p1,p2,pk,都滿足a p 1 pi p 1...