See More

import java.util.List; import java.util.ArrayList; import java.util.Collections; public class FibonacciPrime { List primes = new ArrayList<>(); List fibPrimes = new ArrayList<>(); public boolean isPrime(int num) { if (num < 2) return false; if (num >= 2 && primes.isEmpty()) primes.add(2); if (num == 2) return true; if (Collections.binarySearch(primes, num) >= 0) return true; int i = 0; if (primes.size() < 2) i = 3; else if (primes.size() > 1) i = primes.get(primes.size() - 1) + 2; boolean isNumPrime = false; boolean primeCandidate = true; for (; i <= num; i += 2) { primeCandidate = true; for (int prime : primes) if (i % prime == 0) primeCandidate = false; if (primeCandidate) { primes.add(i); if (i == num) isNumPrime = true; } } System.out.println(primes); return isNumPrime; } public static void main(String[] args) { FibonacciPrime fp = new FibonacciPrime(); System.out.println(fp.isPrime(23)); System.out.println(fp.isPrime(22)); System.out.println(fp.isPrime(229)); int i = 2; while (true) { System.out.println(i + " is prime? " + fp.isPrime(i++)); } } }