SPOJ Liczby pierwsze - błedny wynik
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

SPOJ Liczby pierwsze - błedny wynik

AutorWiadomość
Temat założony przez niniejszego użytkownika
SPOJ Liczby pierwsze - błedny wynik
» 2020-01-07 11:16:25
Witam. Wyrzuca błedny wynik. Tresc zadania:
Sprawdź, które spośród danych liczb są liczbami pierwszymi

Input
n - liczba testów n<100000, w kolejnych liniach n liczb z przedziału [1..10000]
Output
Dla każdej liczby słowo TAK, jeśli liczba ta jest pierwsza, słowo: NIE, w przeciwnym wypadku.
Example
Input:
3
11
1
4
Output:
TAK
NIE
NIE

C/C++
#include <iostream>

using namespace std;
int ammountOfNumbers, number, sprawdzacz = 0;

int main()
{
    cin >> ammountOfNumbers;
    for( int j = 0; j < ammountOfNumbers; j++ ) {
        cin >> number;
       
        if( number < 2 ) cout << "NIE" << endl;
        else if( number == 2 || number == 3 ) { cout << "TAK" << endl; }
        else if( number > 2 ) {
            for( int i = 2; i <= number / 2; i++ ) {
                if( number % i == 0 ) { cout << "NIE" << endl;
                    sprawdzacz = 0;
                    break;
                }
                else { sprawdzacz = 1; }
            } }
        if( sprawdzacz == 1 ) { cout << "TAK" << endl; }
       
    }
    return 0;
}
P-175983
» 2020-01-07 18:04:09
2 17 2
TAK
TAK
TAK
Program nie działa nawet dla przykładowych danych z zadania. Jak ty to niby testowałeś?
P-175985
Temat założony przez niniejszego użytkownika
» 2020-01-08 15:30:00
Naprawiłem. Nie działało ponieważ ostatni if był poza klamrami i wykonywał sie zawsze. Nie mołem go znaleźć ze wzgledu na złe formatowanie kodu. zmienna sprawdzacz po wpisaniu jakiekolwiek liczby pierwszej wiekszej od 3 była zawsze =1.  Wystarczyło dodac klamre i działa. Popracowałem dodatkowo nad formatowaniem i mam nadzieje ze jest lepiej.
Dziekuje za naprowadzenie :)
P-175989
« 1 »
 Strona 1 z 1