Оператор
continue
пропускает текущую итерацию l oop.
В вашем коде count >= 1 || countTwo >= 1
истинно для каждого значения i
, поэтому оператор continue
выполняется на каждой итерации внешнего l oop, и как только оператор continue
выполняется, он возвращается к началу l oop, даже не выполняя приведенные ниже операторы. В конце концов, условие завершения l oop оценивается как false и, следовательно, l oop прерывается.
В вашем случае нет абсолютно никакого использования метки, потому что без метки ваш код будет выполняться точно так же так же, как и с этикеткой.
Также ваш лог c неверен. Вы можете упростить свой код, как показано ниже:
public class TwinPrimeNumbers {
static boolean isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i < n; i++)
if (n % i == 0) return false;
return true;
}
public static void main(String args[]) {
int primeOne = -1;
for (int i = 1; i <= 100; i++) {
// if current number is prime and the differene between
// previously saved prime number and current number is 2,
// then we have a pair of Twin Primes
if (i - primeOne == 2 && TwinPrimeNumbers.isPrime(i)) {
System.out.printf("Twin Primes: ( %d, %d ) %n", primeOne, i);
// update primeOne
primeOne = i;
}
// if previous condition is false and current number is prime,
// save it in primeOne variable
else if (TwinPrimeNumbers.isPrime(i)) {
primeOne = i;
}
}
}
}
вывод:
Twin Primes: ( 3, 5 )
Twin Primes: ( 5, 7 )
Twin Primes: ( 11, 13 )
Twin Primes: ( 17, 19 )
Twin Primes: ( 29, 31 )
Twin Primes: ( 41, 43 )
Twin Primes: ( 59, 61 )
Twin Primes: ( 71, 73 )