163 / 277
Oct 2018

Ktoś wie co tu jest źle? Czy możę nie o to chodzi w tym zadaniu?

#include

using namespace std;

int main()
{
int n;
while (cin >> n)
if (((n%2==0)&&(n>2))||((n%3==0)&&(n>3))||((n%5==0)&&(n>5))||((n%7==0)&&(n>7)))
cout << “NIE” << endl;
else cout << “TAK” << endl;
return 0;
}

skoro znalazłeś właściwy wątek, to szkoda,że go poprzednio nie przeczytałeś

więc zrób to teraz, a ja w zamian nie napiszę co myślę o twoim programie

Napewno, ale tu nie o to chodzi, chodzi o to abyś w miarę możliwości sam znalazł błąd.

Dokładnie tak, chodzi niby o to ale nie zupełnie tak. Dlatego warto wrócić do treści zadania i dokładnie je przestudiować, łącznie z przykładem. Możliwe, że studiowanie, to w tym wypadku za duże słowo, w końcu tam są tylko trzy zdania i jeden przykład, więc tym bardziej warto to - przeczytać i przemyśleć - , zrobić bardzo powoli, dokładnie i ze zrozumieniem.

Gdybyś uważał, że trzy zdania, to za mało, tutaj --> http://discuss.spoj.com/search?q=“liczby%20pierwsze”10 znajdziesz więcej do poczytania i “studiowania”. :wink:

2 months later

Witam
Program kompiluje się poprawnie.
Spoj jednakże odrzuca odpowiedzi.


Czy byłby ktoś w stanie znaleźć przyczynę odrzucania tego kodu?

Nie uwzględniałem 0 i 1. SPOJ przyjął rozwiązanie.
Nie było tematu, sorry za zamieszanie.

Czy ktoś jest w stanie mi wytłumaczyć mój błąd? W sensie wskazać, rozwiązanie pewnie znajdę jak będę znał przyczynę.

ten problem był już kilkakrotnie omawiany (choć nie mam pewności, czy w tym wątku)
przeczytaj cały wątek i inne poświęcone temu zadaniu a na pewno znajdziesz odpowiedź

5 months later

Powie mi ktoś czemu sędzia nie zalicza mi tego programu? Przecież działa on dobrze…

`#include

using namespace std;

bool isPrime (int n)
{
if (n<2)
return false;

for (int i = 2; i*i <= n; i++)
{
    if (n%i == 0)
    {
        return false;
    }
    return true;
}

}

int main()
{
int n, testy;
cin >> testy;
int tab[testy];
for (int i=0; i < testy; i++)
{
cin >> n;
tab[i] = n;

}
for (int i = 0; i < testy; i++)
{
    isPrime(tab[i]) ? cout << "TAK\n" : cout << "NIE\n";
}
return 0;

}
`

#include <iostream>

using namespace std;

bool isPrime (int n)
{
if (n<2)
return false;

for (int i = 2; i*i <= n; i++)
{
    if (n%i == 0)
    {
        return false;
    }
    return true;
}

}

int main()
{
int n, testy;
cin >> testy;
int tab[testy];
for (int i=0; i < testy; i++)
{
cin >> n;
tab[i] = n;

}
for (int i = 0; i < testy; i++)
{
    isPrime(tab[i]) ? cout << "TAK\n" : cout << "NIE\n";
}
return 0;

}

Czemu sędzia nie zalicza tego programu? Przecież działa on poprawnie.

A czemu Twój program wypisuje “TAK” np. dla liczby 9?

@jokerekv2 powinieneś zwracać wartość true po opuszczeniu pętli. Inaczej wynik funkcji jest niepoprawny.
PS. Nie używaj VLA.

Jakie zadanie masz na myśli z tą pętlą?
Co to jest VLA?

@hipcia Faktycznie… byłem pewien, że return true znajduje się poza pętlą. Kompletnie tego nie zauważyłem. Dzięki wielkie… teraz śmiga i sędzia zaliczył.
@eksekk Błąd naprawiony.

Witam
Nie moge zaliczyc tego zadania
Prosilbym o wskzowki :slight_smile:
Sprawdzalem duzo liczb i wyskakiwalo mi prawidlowo.

#include

using namespace std;

int main()
{
int liczba;

cin>>liczba;

if (liczba<2) {cout<<“NIE”;}
if (liczba==2) {cout<<“TAK”;}
if(liczba%2==1) {cout<<“TAK”;}
else {cout<<“NIE”;}

return 0;

}

  1. Gdy podajesz kod podawaj go najlepiej jako link do Ideone. To jak to podałeś jest bardzo nieczytelne
  2. Twój program nawet nie wczytuje poprawnie danych wejściowych podanych tak jak jest to w treści zadania.
    Przeczytaj dokładnie jak powinno to wyglądać i zrób to na Ideone
  3. Twój kod je niepoprawny. Powiedz jakie wyniki dostaniesz dla 25 35 itp? Będzie, że TAK a to przecież nie są liczby pierwsze