Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.82 KB | None | 0 0
  1. public static int inverse(int a, int b) throws Exception {
  2.     List<Integer> l1 =  new ArrayList<>();
  3.     List<Integer> l2 = new ArrayList<>();
  4.     l1.add(b);
  5.     l1.add(a);
  6.    
  7.     while (true) {
  8.         int r = l1.get(l1.size() - 2) % l1.get(l1.size() - 1);
  9.         int q = l1.get(l1.size() - 2) / l1.get(l1.size() - 1);
  10.         l1.add(r);
  11.         l2.add(q);
  12.         if (r == 0 || r == 1) {
  13.             break;
  14.         }
  15.     }
  16.     if (l1.get(l1.size() - 1) == 0) {
  17.         throw new Exception("inverse does not exist");
  18.     }
  19.    
  20.     int i, j, k, l;
  21.     i = 1; j = 0; k = 0; l = 1;
  22.     for (Integer n : l2) {
  23.         int tmp1 = i - (n * k);
  24.         int tmp2 = j - (n * l);
  25.         i = k;
  26.         j = l;
  27.         k = tmp1;
  28.         l = tmp2;
  29.     }
  30.    
  31.     if (l < 0) {
  32.         l += b;
  33.     }
  34.     return l;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement