Существует BigInteger.nextProbablePrime()
, который может подойти, если вы работаете с большими целыми числами.В противном случае вы можете написать свой собственный достаточно легко.Вот тот, который я подготовил ранее:
static long nextPrime(long previous) {
if (previous < 2L) { return 2L; }
if (previous == 2L) { return 3L; }
long next = 0L;
int increment = 0;
switch ((int)(previous % 6L)) {
case 0: next = previous + 1L; increment = 4; break;
case 1: next = previous + 4L; increment = 2; break;
case 2: next = previous + 3L; increment = 2; break;
case 3: next = previous + 2L; increment = 2; break;
case 4: next = previous + 1L; increment = 2; break;
case 5: next = previous + 2L; increment = 4; break;
}
while (!isPrime(next)) {
next += increment;
increment = 6 - increment; // 2, 4 alternating
}
return next;
}
. Для пропуска по кратным числам 2 и 3 используется колесо 2, 4. Вам понадобится простой метод тестирования:возвращает true
, если его параметр прост, false
в противном случае.