16 / 277
Aug 2016

Kod dajemy w znacznikach dostępnych pod ctrl + shift + c albo linkujemy do ideone. Dzięki temu będzie w całości. Aczkolwiek już widzę że sprawdzasz za mało liczb, dla testu
2
121
169

Masz
Tak
Tak

a powinno być 2x NIE (wielkość liter ma znaczenie), bo to 11 * 11 i 13 * 13.

Witam, bardzo proszę o informacje dlaczego ten kod nie działa?
Listę z liczbami pierwszymi również wygenerowałem w oddzielnym programie i wszystko wydaje się być dobrze. Może jest jakiś problem z output-em?

liczby_str=input()
temp=liczby_str.split('\n')
liczby=[int(i) for i in temp]

liczby_pierwsze=[]   # lista z liczbami pierwszymi z zakresu 1 do 10000

for i in liczby[1:liczby[0]+1]:
    if i in liczby_pierwsze:
        print('TAK')
    else:
        print('NIE')

Zakładając że to Python, input() wczyta ci pojedynczą linię a nie całe wejście. Jako że w tym zdaniu każda liczba jest w osobnej linii, musisz wsadzić dodatkowego do for-a żeby wczytywał liczby do sprawdzenia.

Teraz działa raczej dla wszystkich przypadków, a i tak mam że błędna odpowiedź. Ktoś pomoże?

include

include

using namespace std;

int main()
{
int ile,a,p=1,k;
cin>>ile;
for (int i=0;i<ile;i++)
{
cin>>a;
k=sqrt(a);
for (int j=2;j<=k;j++)
{
if (a<2)
{
cout<<""<<endl;
break;
}
if (a%j==0)
{
p++;
}
}
if(p>1)
{
cout<<"NIE"<<endl;
}
else
{
cout<<"TAK"<<endl;
}
p=1;
}
}

Kody dajemy w znaczniku dostępnym pod ctrl + shift + c, lub też linkujemy do ideone. Na szczęście wycieło tylko include-y wiec mogłem sprawdzić i daje ci błędny wynik dla 1 (takowa nie jest liczbą pierwszą wbrew temu co twierdzi twój program. Jest też w zestawie przykładowym wiec powinieneś sam to zauważyć). Naprawiłem to i sędzie zaliczył.

Witam. Mimo jak mi się wydaje dobrze działającego programu nie zalicza mi go. Proszę dlatego o pomoc, wytłumaczenie co może być nie tak.

#include <iostream>

using namespace std;

int n;
int x;
int ile;
int main()
{
    cin >> n;

    for (int i=0; i<n; i++){
    ile = 0;
        cin >> x;
        for ( int j=1; j<=x; j++)
        {
            if(x%j == 0)
            {
            ile++;
            }
        }
        if (ile == 2){
        cout << "TAK";
        } else cout << "NIE";
    }


    return 0;
}

mam pytanie czemu jak mam program w takiej postacji:

include

using namespace std;

int main()
{
int a , ile;
cin >> ile;

for ( int i = 1 ; i <=ile ; i++ )
{
    cin >> a;
    if ( a == 1 || a == 0)
    {
        cout << "NIE" << endl;
    }
    else if ( a == 2 || a == 3 || a == 5 || a == 7)
    {
        cout << "TAK" << endl;
    }
    else if (  (a%2==0) || (a%3==0) || (a%5==0) || (a%7==0) )
    {
        cout << "NIE" << endl;
    }
    else
    {
        cout << "TAK" << endl;
    }
}
return 0;

}

to wszystko gra. Natomiast dlaczego sędzia nie chce przyjąć tego kodu?? Natomiast jak mam w takiej postaci to wszystko się sypie??

include

using namespace std;

int main()
{
int a , ile;
cin >> ile;

for ( int i = 1 ; i <=ile ; i++ )
{
    cin >> a;
    if ( a == 2 || a == 3 || a == 5 || a == 7)
    {
        cout << "TAK" << endl;
    }
    else if (  (a/2) || (a/3) || (a/5) || (a/7) )
    {
        cout << "NIE" << endl;
    }
    else
    {
        cout << "TAK" << endl;
    }
}
return 0;

}

Zupełnie nierozumiem twoich pytań, przecież obie wersje twoich programów są [OBYDWIE WERSJE] bardzo dobre i nie rozumiem co ci się tam sypie?
Pierwsza wersja dokładnie typuje liczby pierwsze i nie-pierwsze w zakresie od 0 do 120, a potem już troszeczkę mniej dokładnie - czasami zdarza mu [twojemu programowi]nieznacznie się pomylić.
Co do drugiej wersji, jest dokładnie tak samo [więc co tu się sypie]. Różnica jest tylko taka [malutka], że zakres dokładności skurczył się jakoś magicznie do 2 - 10. Powyżej tego zakresu [tak mi się wydaje, chociaż nie testowałem, a tylko tak sądzę] twój program nie widzi liczb pierwszych.
Czyli można by [w drugim przypadku] napisać w środku pętli po prostu:

if ( a == 2 || a == 3 || a == 5 || a == 7 || a == 0 || a == 1)
        cout << "TAK" << endl;
else  
       cout << "NIE" << endl;

i dostaniemy dokładnie takie same wyniki, jak twoim drugim programem, czyż nie?

PS
Gdybyś choć trochę dokładniej poczytał ten wątek - było już o tym wcześniej pisane. Lub gdybyś trochę rozszerzył zakres testowania ...

include

using namespace std;

int main()
{
long int a , ile;
cin >> ile;
if ( ile < 100000)
{
for ( int i = 1 ; i <=ile ; i++ )
{
cin >> a;
if ( a > 0 && a < 10000)
{
if ( a == 1)
{
cout << "NIE" << endl;
}
else if ( a == 2 || a == 3 || a == 5 || a == 7)
{
cout << "TAK" << endl;
}
else if ( (a%2==0) || (a%3==0) || (a%5==0) || (a%7==0) )
{
cout << "NIE" << endl;
}
else
{
cout << "TAK" << endl;
}
}

    }
}
return 0;

}

nie wiem czemu sędzia mi kodu nie przyjmuje w internecie znalazłem pierwsze liczby do 1000000 i wybierałem losowo i za każdym razem dobrze działa ale nie mam mimo wszystko zaliczonego zadania???

  1. Po kiego dodałeś instrukcje: if ( ile < 100000) and if ( a > 0 && a < 10000) !!!????
  2. Czemu dodałeś je [pkt 1] z błędem ?????!!!!!!
  3. Więc jeżeli tak, to może po prostu je usuń [patrz pkt 1 i 2], bo to może być dodatkowy powód nie zaliczania zadania.
  1. Więc pozwól, że też wybiorę zupełnie losowo : 121
  2. Czy 121 jest liczbą pierwszą???!!!!!!
  3. Jeżeli nie wiesz, to sprawdź w swoim internetowym znalezisku.
  4. A co "mówi" twój wspaniały program!!!?????? :wink:
  5. Jeżeli się myli, już przy tak małej liczbie, to może się myli jeszcze dużo więcej razy przy większych, jak sądzisz?
    ..............
  6. Czy warto pisać to tyle razy, jak i tak tego nie czytasz!!!???? {mam na myśli ten wątek i wcześniejsze posty]. Ile razy można wciąż powtarzać w kółko to samo?

sorry nie zauważyłem tego że liczbę 121 pokazuje mi ze jest to liczba pierwsza chociaż nie jest ale co dziwne jak sprawdzam wielkie liczby to działa dobrze 5303 TAK 5011 TAK 5009 TAK 5483 TAK muszę zobaczyć co jest z tymi liczbami.

Zwyczajnie sprawdzasz za mało pierwszych. Ten kod działa ci dla liczb które mają jakiś dzielnik >2 i <11, niezależnie od ilości cyfr w liczbie (byle się w int zmieściła)

Może mi ktoś sprawdzić mój kod i powiedzieć co jest w nim nie tak? (wyskakuje mi, że błędna odpowiedz)

include

using namespace std;

int main()
{

int n;

cin>>n;
int liczby[n];
for(int i=0; i<n; i++)
{
    cin>>liczby[i];
    if((liczby[i]%2==0)||(liczby[i]==1)) cout<<"NIE"<<endl;
    else cout<<"TAK"<<endl;
}

return 0;

}

Po pierwsze kod dajemy w tagu dostępnym pod ctrl + shift + c.

po drugie dla testu
3
9
25
121

Daje ci 3x TAK a powinien 3x NIE.

Twój program odpowiada na pytanie czy liczba jest nieparzysta i rózna od 1.
Dla zapytania np o liczbę 33 odpowie TAK, to nieparzysta, ale przecież w zadaniu nie o to chodzi.
33 NIE nie jest liczbą pierwszą. Dzieli się i przez 1, 3, 11, 33.

Poczytaj albo ten wątek i wszystkie inne o tym zadaniu tu na forum, albo poszukaj w internecie informacji o liczbach pierwszych i o metodach [algorytmach] sprawdzania czy liczba jest liczbą pierwszą

11 days later

Ma ktoś pomysł co tu jest źle bo ja nie ogarniam gdyż sędzia pokazuje że źle a ja nie widzę błędu :confused:

include

using namespace std;

int n,l;

int liczba_pierwsza(int p)
{
if (p%p==0 && p%1==0 && p!=1 && p%2!=0 && p%3!=0 || p==2 || p==3) cout << "TAK" << endl;
else cout << "NIE" << endl;
}
int main()
{
cin >> n;
for (int i=0; i<n; i++)
{
cin >> l;
liczba_pierwsza(l);
}
return 0;
}

może należało po prostu przeczytać ten wątek ?

może sprawdzić twój program dla kilku, kilkunastu liczb podanych w wątku ?

ty nie musiałbyś wtedy pisać, a ja czytać i odpowiadać na problem, który wystąpił wielokrotnie