JAVA快速幂(计算模c意义下的a^b结果)

2019-04-14 16:44发布

手敲快速幂 static long modpow(long a,long b,long c){ //..to calculate a^b%c long ans = 1; do{ if(b%2==1){ ans = ans*a%c; } b = b>>1; a = a*a%c; }while(b!=0); return ans; }
大数STL快速幂 //..to calculate a^b%c out.println(BigInteger.valueOf(a).modPow(BigInteger.valueOf(b),BigInteger.valueOf(c)));
区别:abc在大概10^9以上的时候大数模板STL比手敲快速幂快一点,以下的时候手敲快速幂更快;但是考虑到手敲快速幂在对10^9以上abc进行运算的时候有可能会溢出且在以下的时候只比大数STL略慢一点,全部的快速幂都使用大数STL就好。手敲快速幂主要用来理解原理,实际应用不采用。