code: import org.apache.commons.math3.fraction.BigFraction;
  
  public class BernoulliNumbers {
  
      public static void main(String[] args) {
          for (int n = 0; n <= 60; n++) {
              BigFraction b = bernouilli(n);
              if (!b.equals(BigFraction.ZERO))
                  System.out.printf("B(%-2d) = %-1s%n", n , b);
          }
      }
  
      static BigFraction bernouilli(int n) {
          BigFraction[] A = new BigFraction[n + 1];
          for (int m = 0; m <= n; m++) {
              A[m] = new BigFraction(1, (m + 1));
              for (int j = m; j >= 1; j--)
                  A[j - 1] = (A[j - 1].subtract(A[j])).multiply(new BigFraction(j));
          }
          return A[0];
      }
  }
  