标签:amp col cto span test roo code 暴力 原根
vector<long long >a; template<class T> T fast_mod(T a,T b,T Mod){ if(b==0) return 1; T ans=1,base=a; while(b!=0){ if(b&1)ans=(ans*base)%Mod; base=(base*base)%Mod; b>>=1; } return ans; } //求mod p意义下的原根 p为素数 //采用暴力求解,一个一个试p-1的因子即可 bool g_test(long long g,long long p){ for(long long i=0;i<a.size();i++) if(fast_mod(g,(p-1)/a[i],p)==1) return ; return 1; } long long primitive_root(long long p){ long long tmp=p-1; for(long long i=2;i<=tmp/i;i++) if(tmp%i==0) { a.push_back(i); while(tmp%i==0) tmp/=i; } if(tmp!=1) a.push_back(tmp); long long g=1; while(1){ if(g_test(g,p)) return g; g++; } }
标签:amp col cto span test roo code 暴力 原根
原文地址:https://www.cnblogs.com/033000-/p/10075754.html