input設m是正整數,a是整數,若a模m的階等於φ(m),則稱a為模m的乙個原根。(其中φ(m)表示m的尤拉函式)
給出1個質數p,找出p最小的原根。
輸入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...