JAVA求扩展中国剩余定理

大数记得试一下int__128;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
  
 
public class Main {
    public static void main (String[] args){
        Scanner scan = new Scanner(System.in);
        BigInteger []a=new BigInteger[105];
        BigInteger []b=new BigInteger[105];
            int n;
            n=scan.nextInt();
            BigInteger m=scan.nextBigInteger();
            for(int i=0;i List_Q = new ArrayList();
            ArrayList List_S = new ArrayList();
            BigInteger temp, res,m_rec = m;
            //通过辗转相除获得List_Q
            while (!m.equals(BigInteger.ZERO)){
                temp = m;
                List_Q.add(M.divide(m));
                m = M.remainder(m);
                M = temp;
            }
                     
            //根据递推公式获得List_S
            List_S.add(BigInteger.ONE);
            List_S.add(BigInteger.ZERO);
            for (int i = 2 ; i < 1 + List_Q.size() ; i++){
                List_S.add(List_S.get(i - 2).subtract(List_Q.get(i - 2).multiply(List_S.get(i - 1))));
            }
            res = List_S.get(List_S.size() - 1);
            while (res.compareTo(BigInteger.ZERO) < 0){
                res = res.add(m_rec);
            }
            return res.mod(m_rec);
        }
}

你可能感兴趣的:(中国剩余定理)