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
Witam Czy jest jakaś dobra dusza która programuje w Jave i wyjaśni mi co w moim kodzie nie działa ? Programuje od kilku dni i brakuje mi doświadczenia dlatego zgłaszam się do mądrzejszych
import java.util.Scanner;
public class LIczbyPierwsze {
public static void main(String[] args) {
int b = 1;
int c = 0;
Scanner lPierwsza = new Scanner(System.in) ;
int a = lPierwsza.nextInt();
int g = a+1;
for ( int i =1;i<g;i++)
{
if (a%i==0){
c = b++ ;
}
}
if (c==2){
System.out.println("TAK");
}else{
System.out.println("NIE");
}
}
}
popatrz na moją odpowiedź na twoje pytanie w wątku: ETI06F1 - Pole pewnego koła