Sprawdzanie czy liczba jest pierwsza

0

Siema. Musze napisać metode sprawdzającą czy liczba jest pierwsza. Stworzyłem coś takiego

public class zadanie6 
{	
	public static void main(String[]args)
		{
		System.out.print(czyPierwsza(1127)); 
		}
	
	public static boolean czyPierwsza(int a)
		{etykieta1:
		for(int b=2;b<=(a/2);b++)
			{if(a%b==0)
			 	{return false;
			 	break etykieta1;
			 	}
			}
		return true;
		}
}

Kompilator wskazuje błąd w linijce "break etykieta1".Nie rozumiem co tu jest źle i dlatego prosze o poprawienie kodu/wyjaśnienie błędu.

0

Ten break jest niepotrzebny. Wywal go.

isPrime(int a) {
  for (int i = 2; i <= Math.sqrt(a); i++)
    if (a % b == 0) return false;
  return true;
}
1

@winerfresh, wiesz że pierwiastkowanie jest kosztowne, i różni się od b, a 9 nie jest liczbą pierwszą?

isPrime(int a) {
  double limit = Math.sqrt(a);
  for (int i = 2; i <= limit; i++)
    if (a % i == 0) return false;
  return true;
}
0

Przyjąłem, że skoro wartość a nie zmienia się w pętli to wartość graniczna pętli zostanie obliczona raz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.