What your code can do is run this first and if it returns false then do a quick double check using a traditional isPrime function. Really speeds things up!
I mean, it has a 99.999%+ success rate on a large enough sample and I can live with that.
Good idea, but it would be much faster if you do the double-check on true instead.
Better. Return true if the number is in a stored list of known primes, otherwise return false right away. But then, start a separate thread with an actual verification algorithm. When the verification is done, if it was actually a prime number, you just crash the program with a WasActuallyPrime exception.