Algorytm jest OK - chociaż są dużo lepsze sposoby na zaliczenie tego zadania (np. badanie dzielników n do sqrt(n) albo sito Eratostenesa). Nie wiem jak piszesz cudzysłowy ale coś robisz nie tak. Na klawiaturze musisz klawisz na prawo od średnika wcisnąć razem z Shiftem. Ponadto nie zastosowałeś się do rady eksekk - słowa TAK i NIE muszą być napisane wielkimi literami. Po poprawieniu tych 2 rzeczy dostałem AC Twoim kodem. A i jeszcze porada praktyczna - kody udostępniaj jako link do ideone.com7.
Powodzenia
nie rozumiesz treści zadania i nie rozumiesz, co piszę
czy naprawdę dla danych testowych z zadania masz taki wynik, jak podano ?
a generalnie, to należy testować w środowisku podobnym do tego, w jakim działa spoj - czyli na ideone.com, a jeżeli już na vs, to z przekierowanym wejściem/wyjściem
@general_iceman przeczytaj jeszcze raz treść zadania:
Input
n - liczba testów n<100000, w kolejnych liniach n liczb z przedziału [1…10000]
Teraz przyjrzyj się przykładowemu wejściu i SPRAWDŹ swoje wyniki
Input:
3
11
1
4
Output:
TAK
NIE
NIE
Poza tym w funkcji Pierwsza(x) powinieneś rozpatrywać przypadek 0 i 1. W funkcji Main będziesz mógłbyś uprościć kod do takiej konstrukcji:
if (Pierwsza(x)) {...}
else {...}
Witam, jestem nowym użytkownikiem i świeżym “programistą”. Uczę się Javy od kliku dni Mam problem z tym zadaniem. W domu wszystko hula jak należy, ale na serwerze wyrzuca błąd NZEC. Czy ktoś wie gdzie mam błąd? Mój kod wygląda tak:
import java.util.;
import java.lang.;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner scanner = new Scanner(System.in);
for(int i = 0; i < 100000; i++){
System.out.println("Podaj liczbę:");
int liczba = scanner.nextInt();
int k = 0;
for(int j = 1; j < liczba; j++)
if(liczba%j == 0)
k++;
if(k>1)
System.out.println("NIE");
else
System.out.println("TAK");
}
}
}
Moje wskazówki:
- Niepotrzebnie wypisujesz "Podaj liczbę: ". Kod sprawdzany jest automatycznie i musisz dostosować się do
formatu we/wy opisanego w zadaniu, bo inaczej dostaniesz WA. - Nie wczytujesz liczby określającej liczbę przypadków testowych - musisz ją wczytać a potem uruchomić pętlę dla
testów. Ty wykonujesz tę pętlę zawsze 100000 razy. - Wystarczy sprawdzać dzielniki od 2 do pierwiastka z n. (int j = 2; j*j <= n; j++). Gdy tylko znajdziesz dzielnik możesz
opuścić tę pętlę, bo liczba będzie złożona. - Musisz rozważyć sytuację gdy liczba to 0 lub 1 - bo to nie są liczby pierwsze.
Powyższe wskazówki pozwolą Ci na uzyskanie AC. A oto bardziej ogólne porady:
- Najoptymalniejszym sposobem na to zadanie jest sito Erastotenesa - jak już pouczysz się trochę to proponuję
powrócić do tego zadania i zaliczyć je tym algorytmem. - Swój kod przekazuj w formie linku do ideone.com1. Możesz tam wklejać input i testować swój kod.
Staraj się też poprawić czytelność kodu. - Java ma bardzo wolne I/O. Są dużo lepsze sposoby organizacji I/O - poszukaj na przyszłość.
- To zadanie wcale nie jest najłatwiejsze z kategorii łatwych. Poniżej masz linki do kilku bardzo prostych, żebyś mógł
się oswoić:
https://pl.spoj.com/problems/PTEST/6
https://pl.spoj.com/problems/POTSAM/4
https://pl.spoj.com/problems/MWPZ06X/3
https://pl.spoj.com/problems/VSR/4