Not super useful for scripting, but here you go.
package org.bjornkrols.math;
import java.util.BitSet;
/**
* @author Bjorn Krols (Botre)
* @version 0.2
* @since April 16, 2015
*/
public final class SieveOfEratosthenes {
public static void main(String[] args) {
SieveOfEratosthenes sieve = new SieveOfEratosthenes(100);
System.out.println(sieve.isPrime(29));
}
public BitSet sieve;
public SieveOfEratosthenes(int n) {
calculate(n);
}
private void calculate(int n) {
sieve = new BitSet(n);
// Assume all numbers are prime.
for (int i = 2; i < sieve.size(); i++) sieve.set(i, true);
// Find the square root of n.
double sqrtn = Math.floor(Math.sqrt(n));
for (int i = 2; i < sqrtn; i++) if (sieve.get(i)) for (int j = i * i; j < n; j += i) sieve.set(j, false);
}
public boolean isPrime(int n) {
return sieve.get(n);
}
}
package org.bjornkrols.math;
/**
* @author Bjorn Krols (Botre)
* @version 0.0
* @since April 16, 2015
*/
public final class PrimalityTest {
private PrimalityTest() {
// This class should never be instantiated.
// Do not delete or make accessible.
}
public static boolean test(long n) {
// A whole number greater than one is called a prime number if its only positive divisors (factors) are one and itself.
// All whole numbers between 1 and 3 are prime.
if (n <= 3) return n > 1;
// All multiples of 2 and 3 are not prime.
if (n % 2 == 0 || n % 3 == 0) return false;
// Find the square root of n.
double sqrtn = Math.floor(Math.sqrt(n));
// All primes are of the form 6k ± 1 (with the exception of 2 and 3).
for (int divisor = 5; divisor <= sqrtn; divisor += 6) if (n % divisor == 0 || n % (divisor + 2) == 0) return false;
return true;
}
}
2 true
3 true
5 true
7 true
11 true
13 true
17 true
19 true
23 true
29 true
31 true
37 true
41 true
43 true
47 true
53 true
59 true
61 true
67 true
71 true
73 true
79 true
83 true
89 true
97 true