/* programming with prime numbers */ import java.util.LinkedList; import java.util.BitSet; import java.math.BigInteger; import java.lang.Exception; import java.lang.Boolean; import java.util.Random; import java.util.Collections; class Main { { if (n < 2) { } int m = (n-1) / 2; b.set(0, b.size(), true); int i = 0; int p = 3; ps.add(2); while (p * p < n) { if (b.get(i)) { ps.add(p); int j = 2*i*i + 6*i + 3; while (j < m) { b.clear(j); j = j + 2*i + 3; } } i += 1; p += 2; } while (i < m) { if (b.get(i)) { ps.add(p); } i += 1; p += 2; } return ps; } { if (n.compareTo(two) < 0) { } { return n.equals(two); } while (d.multiply(d).compareTo(n) <= 0) { { return false; } d = d.add(two); } return true; } { if (n.compareTo(two) < 0) { } { fs.add(two); n = n.divide(two); } { while (f.multiply(f).compareTo(n) <= 0) { { fs.add(f); n = n.divide(f); } else { f = f.add(two); } } fs.add(n); } return fs; } { int s = 0; { d = d.divide(two); s += 1; } { return true; } while (--s > 0) { t = t.multiply(t).mod(n); if (t.equals(n1)) { return true; } } return false; } { BigInteger a; int k = 25; if (n.compareTo(two) < 0) { return false; } { return n.equals(two); } while (k > 0) { while (a.compareTo(n) >= 0) { } if (! isSpsp(n, a)) { return false; } k -= 1; } return true; } { { t = t.multiply(t).add(c).mod(n); h = h.multiply(h).add(c).mod(n); h = h.multiply(h).add(c).mod(n); d = t.subtract(h).gcd(n); } if (d.equals(n)) /* cycle */ { } else if (isPrime(d)) /* success */ { return d; } else /* found composite factor */ { } } { BigInteger f; if (n.compareTo(two) < 0) { return fs; } { n = n.divide(two); fs.add(two); } { return fs; } while (! n.isProbablePrime(25)) { n = n.divide(f); fs.add(f); } fs.add(n); return fs; } { } }
Standard input is empty
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 78498 false [71, 839, 1471, 6857] false true [71, 839, 1471, 6857]