SPOJ Liczby pierwsze - błedny wynik
Ostatnio zmodyfikowano 2020-01-08 15:30
harassment_____ 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 #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; }
|
|
pekfos |
» 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ś? |
|
harassment_____ 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 :) |
|
« 1 » |