Program do sprawdzania czy liczba jest pierwsza. SPOJ. Błąd

0

Witam. Napisałem program sprawdzający czy liczba jest pierwsza. Program napisałem jako zadanie do SPOJ-u.

Zadanie wygląda tak:
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

Wklejam zadanie do SPOJ-a i wywala mi błąd. Nie wiem co jest nie tak. Sprawdzam program pod kątem wszelakich liczb i ZAWSZE program daje poprawną odpowiedź. Jestem amatorem i nie miałem nigdy styku z "szkolną i regularną" nauką programowania więc przepraszam za syf w kodzie i niepotrzebne pętle..

Oto kod:

#include <iostream>

using namespace std;

long int n;

int main()
{
    cout<<"ile: ";
    cin>>n;
    int pi[n];
    bool odp[n];

    for(long int i=0; i<n; i++)
    {
        cin>>pi[i];
    }
    for(long int j=0; j<n; j++)
    {
        for(long int i=2; i*i<=pi[j]; i++)
        {
            odp[j]=true;
            if(pi[j]%i==0)
            {
                odp[j]=false;
                break;
            }

        }
    }
    for(long int i=0; i<n; i++)
    {
        if(pi[i]==0)
        {
            odp[i]=false;
        }

        if(pi[i]==1)
        {
            odp[i]=false;
        }

        if(pi[i]==2)
        {
            odp[i]=true;
        }

        if(pi[i]==3)
        {
            odp[i]=true;
        }

    }
    for(long int i=0; i<n; i++)
    {
        if(odp[i]==true)
        {
            cout<<"TAK";
        }
        else if(odp[i]==false)
        {
            cout<<"NIE";
        }

        cout<<endl;
    }

    return 0;
}
0

Pierwsze co to musisz wyrąbać te cout'y gdzie masz np "ile:" bo spoj'a interesuje tylko wypisywanie na output TAK lub NIE jak masz w przykładzie.
Drugie co to umieść kod w tagi bo jest mało czytelny
Trzecie to nie spotkałem się z takim zapisem:

   for(long int i=0; i<n; i++)="i++)" {="{" cin="cin">>pi[i];
    }

Ten program w ogóle ci się kompiluje?

4

Pff, tam jakieś drabinki ifów. Jak metoda kopi-pastiego, to na całego!

#include <cstdio>
#include <algorithm>
using namespace std;

int primes[] = {
    2,     3,     5,     7,     11, 
    13,     17,     19,     23,     29, 
    31,     37,     41,     43,     47, 
    53,     59,     61,     67,     71, 
    73,     79,     83,     89,     97, 
    101,     103,     107,     109,     113, 
    127,     131,     137,     139,     149, 
    151,     157,     163,     167,     173, 
    179,     181,     191,     193,     197, 
    199,     211,     223,     227,     229, 
    233,     239,     241,     251,     257, 
    263,     269,     271,     277,     281, 
    283,     293,     307,     311,     313, 
    317,     331,     337,     347,     349, 
    353,     359,     367,     373,     379, 
    383,     389,     397,     401,     409, 
    419,     421,     431,     433,     439, 
    443,     449,     457,     461,     463, 
    467,     479,     487,     491,     499, 
    503,     509,     521,     523,     541, 
    547,     557,     563,     569,     571, 
    577,     587,     593,     599,     601, 
    607,     613,     617,     619,     631, 
    641,     643,     647,     653,     659, 
    661,     673,     677,     683,     691, 
    701,     709,     719,     727,     733, 
    739,     743,     751,     757,     761, 
    769,     773,     787,     797,     809, 
    811,     821,     823,     827,     829, 
    839,     853,     857,     859,     863, 
    877,     881,     883,     887,     907, 
    911,     919,     929,     937,     941, 
    947,     953,     967,     971,     977, 
    983,     991,     997,     1009,     1013, 
    1019,     1021,     1031,     1033,     1039, 
    1049,     1051,     1061,     1063,     1069, 
    1087,     1091,     1093,     1097,     1103, 
    1109,     1117,     1123,     1129,     1151, 
    1153,     1163,     1171,     1181,     1187, 
    1193,     1201,     1213,     1217,     1223, 
    1229,     1231,     1237,     1249,     1259, 
    1277,     1279,     1283,     1289,     1291, 
    1297,     1301,     1303,     1307,     1319, 
    1321,     1327,     1361,     1367,     1373, 
    1381,     1399,     1409,     1423,     1427, 
    1429,     1433,     1439,     1447,     1451, 
    1453,     1459,     1471,     1481,     1483, 
    1487,     1489,     1493,     1499,     1511, 
    1523,     1531,     1543,     1549,     1553, 
    1559,     1567,     1571,     1579,     1583, 
    1597,     1601,     1607,     1609,     1613, 
    1619,     1621,     1627,     1637,     1657, 
    1663,     1667,     1669,     1693,     1697, 
    1699,     1709,     1721,     1723,     1733, 
    1741,     1747,     1753,     1759,     1777, 
    1783,     1787,     1789,     1801,     1811, 
    1823,     1831,     1847,     1861,     1867, 
    1871,     1873,     1877,     1879,     1889, 
    1901,     1907,     1913,     1931,     1933, 
    1949,     1951,     1973,     1979,     1987, 
    1993,     1997,     1999,     2003,     2011, 
    2017,     2027,     2029,     2039,     2053, 
    2063,     2069,     2081,     2083,     2087, 
    2089,     2099,     2111,     2113,     2129, 
    2131,     2137,     2141,     2143,     2153, 
    2161,     2179,     2203,     2207,     2213, 
    2221,     2237,     2239,     2243,     2251, 
    2267,     2269,     2273,     2281,     2287, 
    2293,     2297,     2309,     2311,     2333, 
    2339,     2341,     2347,     2351,     2357, 
    2371,     2377,     2381,     2383,     2389, 
    2393,     2399,     2411,     2417,     2423, 
    2437,     2441,     2447,     2459,     2467, 
    2473,     2477,     2503,     2521,     2531, 
    2539,     2543,     2549,     2551,     2557, 
    2579,     2591,     2593,     2609,     2617, 
    2621,     2633,     2647,     2657,     2659, 
    2663,     2671,     2677,     2683,     2687, 
    2689,     2693,     2699,     2707,     2711, 
    2713,     2719,     2729,     2731,     2741, 
    2749,     2753,     2767,     2777,     2789, 
    2791,     2797,     2801,     2803,     2819, 
    2833,     2837,     2843,     2851,     2857, 
    2861,     2879,     2887,     2897,     2903, 
    2909,     2917,     2927,     2939,     2953, 
    2957,     2963,     2969,     2971,     2999, 
    3001,     3011,     3019,     3023,     3037, 
    3041,     3049,     3061,     3067,     3079, 
    3083,     3089,     3109,     3119,     3121, 
    3137,     3163,     3167,     3169,     3181, 
    3187,     3191,     3203,     3209,     3217, 
    3221,     3229,     3251,     3253,     3257, 
    3259,     3271,     3299,     3301,     3307, 
    3313,     3319,     3323,     3329,     3331, 
    3343,     3347,     3359,     3361,     3371, 
    3373,     3389,     3391,     3407,     3413, 
    3433,     3449,     3457,     3461,     3463, 
    3467,     3469,     3491,     3499,     3511, 
    3517,     3527,     3529,     3533,     3539, 
    3541,     3547,     3557,     3559,     3571, 
    3581,     3583,     3593,     3607,     3613, 
    3617,     3623,     3631,     3637,     3643, 
    3659,     3671,     3673,     3677,     3691, 
    3697,     3701,     3709,     3719,     3727, 
    3733,     3739,     3761,     3767,     3769, 
    3779,     3793,     3797,     3803,     3821, 
    3823,     3833,     3847,     3851,     3853, 
    3863,     3877,     3881,     3889,     3907, 
    3911,     3917,     3919,     3923,     3929, 
    3931,     3943,     3947,     3967,     3989, 
    4001,     4003,     4007,     4013,     4019, 
    4021,     4027,     4049,     4051,     4057, 
    4073,     4079,     4091,     4093,     4099, 
    4111,     4127,     4129,     4133,     4139, 
    4153,     4157,     4159,     4177,     4201, 
    4211,     4217,     4219,     4229,     4231, 
    4241,     4243,     4253,     4259,     4261, 
    4271,     4273,     4283,     4289,     4297, 
    4327,     4337,     4339,     4349,     4357, 
    4363,     4373,     4391,     4397,     4409, 
    4421,     4423,     4441,     4447,     4451, 
    4457,     4463,     4481,     4483,     4493, 
    4507,     4513,     4517,     4519,     4523, 
    4547,     4549,     4561,     4567,     4583, 
    4591,     4597,     4603,     4621,     4637, 
    4639,     4643,     4649,     4651,     4657, 
    4663,     4673,     4679,     4691,     4703, 
    4721,     4723,     4729,     4733,     4751, 
    4759,     4783,     4787,     4789,     4793, 
    4799,     4801,     4813,     4817,     4831, 
    4861,     4871,     4877,     4889,     4903, 
    4909,     4919,     4931,     4933,     4937, 
    4943,     4951,     4957,     4967,     4969, 
    4973,     4987,     4993,     4999,     5003, 
    5009,     5011,     5021,     5023,     5039, 
    5051,     5059,     5077,     5081,     5087, 
    5099,     5101,     5107,     5113,     5119, 
    5147,     5153,     5167,     5171,     5179, 
    5189,     5197,     5209,     5227,     5231, 
    5233,     5237,     5261,     5273,     5279, 
    5281,     5297,     5303,     5309,     5323, 
    5333,     5347,     5351,     5381,     5387, 
    5393,     5399,     5407,     5413,     5417, 
    5419,     5431,     5437,     5441,     5443, 
    5449,     5471,     5477,     5479,     5483, 
    5501,     5503,     5507,     5519,     5521, 
    5527,     5531,     5557,     5563,     5569, 
    5573,     5581,     5591,     5623,     5639, 
    5641,     5647,     5651,     5653,     5657, 
    5659,     5669,     5683,     5689,     5693, 
    5701,     5711,     5717,     5737,     5741, 
    5743,     5749,     5779,     5783,     5791, 
    5801,     5807,     5813,     5821,     5827, 
    5839,     5843,     5849,     5851,     5857, 
    5861,     5867,     5869,     5879,     5881, 
    5897,     5903,     5923,     5927,     5939, 
    5953,     5981,     5987,     6007,     6011, 
    6029,     6037,     6043,     6047,     6053, 
    6067,     6073,     6079,     6089,     6091, 
    6101,     6113,     6121,     6131,     6133, 
    6143,     6151,     6163,     6173,     6197, 
    6199,     6203,     6211,     6217,     6221, 
    6229,     6247,     6257,     6263,     6269, 
    6271,     6277,     6287,     6299,     6301, 
    6311,     6317,     6323,     6329,     6337, 
    6343,     6353,     6359,     6361,     6367, 
    6373,     6379,     6389,     6397,     6421, 
    6427,     6449,     6451,     6469,     6473, 
    6481,     6491,     6521,     6529,     6547, 
    6551,     6553,     6563,     6569,     6571, 
    6577,     6581,     6599,     6607,     6619, 
    6637,     6653,     6659,     6661,     6673, 
    6679,     6689,     6691,     6701,     6703, 
    6709,     6719,     6733,     6737,     6761, 
    6763,     6779,     6781,     6791,     6793, 
    6803,     6823,     6827,     6829,     6833, 
    6841,     6857,     6863,     6869,     6871, 
    6883,     6899,     6907,     6911,     6917, 
    6947,     6949,     6959,     6961,     6967, 
    6971,     6977,     6983,     6991,     6997, 
    7001,     7013,     7019,     7027,     7039, 
    7043,     7057,     7069,     7079,     7103, 
    7109,     7121,     7127,     7129,     7151, 
    7159,     7177,     7187,     7193,     7207, 
    7211,     7213,     7219,     7229,     7237, 
    7243,     7247,     7253,     7283,     7297, 
    7307,     7309,     7321,     7331,     7333, 
    7349,     7351,     7369,     7393,     7411, 
    7417,     7433,     7451,     7457,     7459, 
    7477,     7481,     7487,     7489,     7499, 
    7507,     7517,     7523,     7529,     7537, 
    7541,     7547,     7549,     7559,     7561, 
    7573,     7577,     7583,     7589,     7591, 
    7603,     7607,     7621,     7639,     7643, 
    7649,     7669,     7673,     7681,     7687, 
    7691,     7699,     7703,     7717,     7723, 
    7727,     7741,     7753,     7757,     7759, 
    7789,     7793,     7817,     7823,     7829, 
    7841,     7853,     7867,     7873,     7877, 
    7879,     7883,     7901,     7907,     7919, 
    7927,     7933,     7937,     7949,     7951, 
    7963,     7993,     8009,     8011,     8017, 
    8039,     8053,     8059,     8069,     8081, 
    8087,     8089,     8093,     8101,     8111, 
    8117,     8123,     8147,     8161,     8167, 
    8171,     8179,     8191,     8209,     8219, 
    8221,     8231,     8233,     8237,     8243, 
    8263,     8269,     8273,     8287,     8291, 
    8293,     8297,     8311,     8317,     8329, 
    8353,     8363,     8369,     8377,     8387, 
    8389,     8419,     8423,     8429,     8431, 
    8443,     8447,     8461,     8467,     8501, 
    8513,     8521,     8527,     8537,     8539, 
    8543,     8563,     8573,     8581,     8597, 
    8599,     8609,     8623,     8627,     8629, 
    8641,     8647,     8663,     8669,     8677, 
    8681,     8689,     8693,     8699,     8707, 
    8713,     8719,     8731,     8737,     8741, 
    8747,     8753,     8761,     8779,     8783, 
    8803,     8807,     8819,     8821,     8831, 
    8837,     8839,     8849,     8861,     8863, 
    8867,     8887,     8893,     8923,     8929, 
    8933,     8941,     8951,     8963,     8969, 
    8971,     8999,     9001,     9007,     9011, 
    9013,     9029,     9041,     9043,     9049, 
    9059,     9067,     9091,     9103,     9109, 
    9127,     9133,     9137,     9151,     9157, 
    9161,     9173,     9181,     9187,     9199, 
    9203,     9209,     9221,     9227,     9239, 
    9241,     9257,     9277,     9281,     9283, 
    9293,     9311,     9319,     9323,     9337, 
    9341,     9343,     9349,     9371,     9377, 
    9391,     9397,     9403,     9413,     9419, 
    9421,     9431,     9433,     9437,     9439, 
    9461,     9463,     9467,     9473,     9479, 
    9491,     9497,     9511,     9521,     9533, 
    9539,     9547,     9551,     9587,     9601, 
    9613,     9619,     9623,     9629,     9631, 
    9643,     9649,     9661,     9677,     9679, 
    9689,     9697,     9719,     9721,     9733, 
    9739,     9743,     9749,     9767,     9769, 
    9781,     9787,     9791,     9803,     9811, 
    9817,     9829,     9833,     9839,     9851, 
    9857,     9859,     9871,     9883,     9887, 
    9901,     9907,     9923,     9929,     9931, 
    9941,     9949,     9967,     9973
};

int main() {
    int tests_count, num;
    scanf("%d", &tests_count);
    while(tests_count--){
        scanf("%d", &num);
        if(find(begin(primes), end(primes), num) != end(primes))
            printf("TAK\n");
        else printf("NIE\n");
    }
    return 0;
}

Czas na spoju? 0.06

/EDIT1:
czas z std::binary_search? 0.02
/EDIT2:
@Heheczek czas z tablicą booleanów: 0.01

Tablica: http://ideone.com/x6LyrF

0

Usunąłem tego cout<<"ile" i działa :D :D :D
Dzięki wielkie.
A i z tym dziwnym zapisem long int mi się kompiluje, tez nie wiem czemu ale próbowałem z tym kodem wszystkiego.

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