Liczby pierwsze. Spoj C++

0

Robie zadanie z Spoj.com

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

I wyskakuje mi taki błąd kompilacji: (SIGSEGV) Przez co nie mogę mieć zaliczonego tego zadania.

#include <iostream>
using namespace std;
int main()
{
unsigned long n = 0;
int tab[n];
cin >> n;
if(n >= 1 && n < 100000)
{
int i = 0;
cin >> tab[i];
while(i < n - 1){
++i;
cin >> tab[i];
}
}
for(int i = 0; i < n; ++i)
{
if(tab[i] == 2 || tab[i] == 5 || tab[i] == 3)
{
cout << "TAK" << endl;
}else if(tab[i] == 1 || tab[i] == 0 || tab[i] % 2 == 0 || tab[i] % 3 == 0 || tab[i] % 5 == 0){
cout << "NIE" << endl;
}else{
cout << "TAK" << endl;
}
}
}

1
    unsigned long n = 0; // inicjalizujemy n
    int tab[n]; // tworzymy tablice na ZERO elementów
    cin >> n; // zmieniamy n
0

Poprawiłem to co było i teraz mi się pojawił komunikat: "błędna odpowiedź". Może mam z tego utworzyć funkcje ? Albo zrobić inną metoda?

1

Zacznij od zmiany algorytmu sprawdzania, czy liczba jest pierwsza...

0

To ja muszę to zrobić w jakiejś pętli? Czy jest możliwość żebym naprawił to co jest albo poprawił czy muszę do tego podejść od początku.

0

Poczytaj sobie o sicie Euklidesa, a tablica przyda ci się tylko do zapamiętywania które liczby są pierwsze (wczytujesz, sprawdzasz i od razu wypisujesz). Aczkolwiek bez "sita" i tablicy też się da przejść to zadanie w c++.

0

Ok przepisałem to jeszcze raz i zrobiłem coś takiego, dziwnie mi to wychodzi bo często pojawia mi się za dużo tak i nie, nie wiem do końca co jest źle.
int main()
{
unsigned long liczbaprob;
cin >> liczbaprob;
int tab[liczbaprob];
for(int i = 0; i < liczbaprob; ++i)
{
cin >> tab[i];
}
for(int i = 0; i < liczbaprob; i++){
for(int p=2; p < tab[i]; p++){
if(tab[i] % p == 0){
cout << "NIE" << endl;
break;
}
}
cout << "TAK" << endl;
}
}

0

Przecież u ciebie TAK wypisuje się zawsze, nie widzisz tego?

0

Dzięki, trochę to poprawiłem i udało się :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1