Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
749
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.27 KB | None | 0 0
  1. /**
  2.      * Updates n to its p-th power modulo m.
  3.      *
  4.      * @param n
  5.      *            number to be raised to a power
  6.      * @param p
  7.      *            the power
  8.      * @param m
  9.      *            the modulus
  10.      * @updates n
  11.      * @requires m > 1
  12.      * @ensures n = #n ^ (p) mod m
  13.      */
  14.     public static void powerMod(NaturalNumber n, NaturalNumber p,
  15.             NaturalNumber m) {
  16.         assert m.compareTo(new NaturalNumber2(1)) > 0 : "Violation of: m > 1";
  17.  
  18.         /*
  19.          * Use the fast-powering algorithm as previously discussed in class,
  20.          * with the additional feature that every multiplication is followed
  21.          * immediately by "reducing the result modulo m"
  22.          */
  23.  
  24.         // TODO - fill in body
  25.         NaturalNumber mod = new NaturalNumber2();
  26.         mod = p.divide(new NaturalNumber2(2));
  27.  
  28.         if (p.equals(0)) {
  29.             n.copyFrom(new NaturalNumber2(1));
  30.  
  31.         } else if (mod.isZero()) { //if p is even
  32.             p.divide(new NaturalNumber2(2));
  33.  
  34.             p.multiply(new NaturalNumber2(2));
  35.         } else if (!mod.isZero()) { //if p is odd
  36.             p.divide(new NaturalNumber2(2));
  37.  
  38.             p.multiply(new NaturalNumber2(2));
  39.             p.add(new NaturalNumber2(1));
  40.         }
  41.  
  42.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement