乘法逆元(模板)

乘法逆元定義:

 

 b存在乘法逆元的充要條件是b與模數m互質 緣由:b * x ≡ 1 (mod m) 若是b和m不互質,則 b * x確定是m的倍數,b * x%m=0java

 因此b%m==0 ,b不存在乘法逆元ui

1.當n爲質數時,能夠用快速冪求逆元:

  a / b(整除) ≡ a * x (mod m)spa

  兩邊同乘b可得 a ≡ a * b * x (mod m) -> 1 ≡ b * x (mod m)code

  同 b * x ≡ 1 (mod m)blog

  由費馬小定理可知,當m爲質數時:  b ^ (m - 1) ≡ 1 (mod m)class

       拆一個b出來可得 b * b ^ (m - 2) ≡ 1 (mod m)import

     因此當n爲質數時,b的乘法逆元 x = b ^ (m - 2)%mim

求a的乘法逆元:next

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");
                }
        }
}
相關文章
相關標籤/搜索