51nod 1135 原根

xiaoxiao2021-02-28  59

https://vjudge.net/problem/51Nod-1135#

寻找一个1e9的质数的原根

第一次做这样的题

看了别人的博客才理解的

https://blog.csdn.net/u013486414/article/details/47781857

不过还是有点不太理解原根这个东西的本质

没事,慢慢的理解

AC代码:

#include<iostream> #include<vector> using namespace std; typedef long long ll; ll quickmod(ll a,ll b,ll m){ ll ans=1; while(b){ if(b&1) ans=(ans*a)%m; b>>=1; a=a*a%m; } return ans; } ll get(ll x){ vector<ll> V; ll y=x-1; for(ll i=2;i*i<=y;++i){ if(y%i==0){ V.push_back(i); while(y%i==0){ y/=i; } } } if(y>1) V.push_back(y); for(ll i=2;i<=x-1;++i){ int flag=1; for(int j=0;j<V.size();++j){ if(quickmod(i,(x-1)/V[j],x)==1){ flag=0; break; } } if(flag==1) return i; } } int main(){ ll x; while(cin>>x){ cout<<get(x)<<endl; } }
转载请注明原文地址: https://www.6miu.com/read-2622674.html

最新回复(0)