The word memoize is not misspelled. It means to "remember" or store the result of a method in a "memo." Here we use HashMap to cache primes.
import java.util.HashMap;
public class Program {
public static boolean isPrime(int candidate) {
// This is the same method as described above.
if ((candidate & 1) == 0) {
if (candidate == 2) {
return true;
} else {
return false;
}
}
for (int i = 3; (i * i) <= candidate; i += 2) {
if ((candidate % i) == 0) {
return false;
}
}
return candidate != 1;
}
static HashMap<Integer, Boolean> primes = new HashMap<>();
public static boolean isPrimeMemoized(int candidate) {
// Try to use the HashMap to see if a number is a prime.
if (primes.containsKey(candidate)) {
System.out.println(
"Memoized prime result");
return primes.get(candidate);
}
// Record our prime status in the HashMap.
boolean result = isPrime(candidate);
primes.put(candidate, result);
return result;
}
public static void main(String[] args) {
// Detect prime numbers with memoized method.
boolean value = isPrimeMemoized(10007);
System.out.println(value);
value = isPrimeMemoized(10007);
System.out.println(value);
}
}
true
Memoized prime result
true