https://www.cnblogs.com/qdu-lkc/p/12262827.html
乘法逆元定义:
b存在乘法逆元的充要条件是b与模数m互质 原因:b * x ≡ 1 (mod m) 如果b和m不互质,则 b * x肯定是m的倍数,b * x%m=0
所以b%m==0 ,b不存在乘法逆元
1.当n为质数时,可以用快速幂求逆元:
a / b(整除) ≡ a * x (mod m)
两边同乘b可得 a ≡ a * b * x (mod m) -> 1 ≡ b * x (mod m)
同 b * x ≡ 1 (mod m)
由费马小定理可知,当m为质数时: b ^ (m - 1) ≡ 1 (mod m)
拆一个b出来可得 b * b ^ (m - 2) ≡ 1 (mod m)
所以当n为质数时,b的乘法逆元 x = b ^ (m - 2)%m
求a的乘法逆元:
import java.util.*;
public class Main{
static long quick_pow(long a,long b,long c){
long res=1;
while(b>0){
if((b&1)==1) res=res*a%c;
a=a*a%c;
b>>=1;
}
return res;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int t=scan.nextInt();
while(t-->0){
long a=scan.nextLong();
long p=scan.nextLong();
if(a%p!=0) System.out.println(quick_pow(a,p-2,p));
else System.out.println("impossible");
}
}
}
来源:oschina
链接:https://my.oschina.net/u/4374260/blog/3201454