有关数论的详细的定理证明我就先不写了,否则要写一年。
-
快速幂
快速幂会把幂次方运算从O(n)复杂度降低到O(logn)。
假设求a的b次方,可以把b进行二进制分解,分解成若干个2的 i 次方相加。
例如: ->
注意取模
ll Fast_pow(ll a,ll b,ll p) {
ll r=1,base=a;
while(b) {
if(b&1) r=(r%p*base%p)%p;
base=(base%p*base%p)%p;
b>>=1;
}
return r%p;
}
-
素数(质数)
因子只有1和其本身的数。
-
判断素数O(
)
bool Prime(int x) {
if(x<=1) return false;
for(int i=2;i<=sqrt(x);i++)
if(!(x%i)) return false;
return true;
}