1 / 3
Apr 2017

to pierwsze zadanko i jeszcze nie ogarniam tego spoja. oto kod

import java.util.Scanner;

class CzyLiczbaPierwsza {

public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
	int test = input.nextInt();
	int liczby[] = new int[test];
	boolean wynik = true;
	for (int i = 0; i < test; i++) {
		liczby[i] = input.nextInt();
	}
	for (int j = 0; j < test; j++) {

		if (liczby[j] < 2) {
			wynik = false;
		} else {
			for (int i = 2; i <= Math.sqrt(liczby[j]); i++) {
				if (liczby[j] % i == 0) {
					wynik = false;
					break;
				}
				if (i == liczby[j] - 1) {
					wynik = true;
				}
			}
		}
		if (wynik == true)
			System.out.println("TAK");
		else if (wynik == false)
			System.out.println("NIE");
	}
	input.close();
}

}
http://ideone.com/MS3Q8u10

co jest tu złego?

  • created

    Apr '17
  • last reply

    Aug '17
  • 2

    replies

  • 1.0k

    views

  • 3

    users

  • 1

    link

wyniki są złe :slight_smile:

sprawdź dla danych:

3
8
2
3
4 months later

Mam pytanko odnośnie tego zadania...
Coś sknociłem w swoim kodzie, bo np. dla wartości "1" zwraca TRUE.
Scanner dane = new Scanner (System.in);

System.out.println();
int n = dane.nextInt();
for (int j=1; j<=n; j++){
	int x=dane.nextInt();

	  boolean pierwsza = true;
	  for(int i=2;i*i<=x;i++)
	   if(x%i==0)
	    pierwsza = false;

	  if(pierwsza)
	   System.out.println("TAK");
	  else
	   System.out.println("NIE");

Będę niezmiernie wdzięczny za odpowiedź. Pozdrawiam.