title: about Java BigInteger
body: <p>I'm new to Java and just code a program with BigInteger. </p>
  
  <pre><code>public static void main(String[] args) {
    BigInteger n = new BigInteger("5");
    BigInteger i = new BigInteger("2");
    while (lesserOrEqual(i,n) {
      System.out.println("n.mod(i) = "+n.mod(i));
      if (n.mod(i) == ZERO) {
        n = n.divide(i);
      }
      else {
        i.add(ONE);
    }
    System.out.println("n = "+n);
    System.out.println("i = "+i);
  }
  
  
  public static boolean lesserOrEqual(BigInteger m, BigInteger n) `{
    if (m.compareTo(n) == -1 || m.compareTo(n) == 0)
      return true;
    return false;
  }
  </code></pre>
  
  <p>ZERO and ONE are defined of the type BigInteger 0, 1, respectively.</p>
  
  <p>I want "i=2" to divide "n=5", if "n mod i == 0", else "i++", until "n" to be lesser or equal to "i". </p>
  
  <p>I think the output must be </p>
  
  <pre><code>n.mod(i) = 1
  n = 5
  i = 3
  n.mod(i) = 2
  n = 5
  i = 4
  n.mod(i) = 1
  n = 5
  i = 5
  n.mod(i) = 0
  n = 1
  i = 5
  </code></pre>
  
  <p>and with the equivalent code with primitive type int, I have the result as expected. </p>
  
  <p>but this with BigInteger goes to infinite loop</p>
  
  <pre><code>n.mod(i) = 1
  n = 5
  i = 2
  ...
  </code></pre>
  
  <p>Does anyone know why it is so? </p>