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???
- Po kiego dodałeś instrukcje: if ( ile < 100000) and if ( a > 0 && a < 10000) !!!????
- Czemu dodałeś je [pkt 1] z błędem ?????!!!!!!
- 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.
- Więc pozwól, że też wybiorę zupełnie losowo : 121
- Czy 121 jest liczbą pierwszą???!!!!!!
- Jeżeli nie wiesz, to sprawdź w swoim internetowym znalezisku.
- A co "mówi" twój wspaniały program!!!??????
- 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?
.............. - 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?
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;
}
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ą
Ma ktoś pomysł co tu jest źle bo ja nie ogarniam gdyż sędzia pokazuje że źle a ja nie widzę błędu
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;
}
Witam. Przetestowałem swoją wersję programu dla wielu liczb z zakresu od 0 do 200 i wyniki pokrywają się z prawdą. Gdzie popełniłem błąd w programie? Z góry dziękuję za odpowiedź
#include <iostream>
using namespace std;
int main()
{
int n,liczba;
cin>>n;
for (int i=0;i<n;i++)
{
cin>>liczba;
int k=2;
do
{
if(liczba==0|liczba==1|(liczba%k==0))
{cout<<"NIE"<<endl;break;}
else if(k==liczba-1){cout<<"TAK"<<endl;}
k++;
}while(k<=liczba-1);
}
return 0;
}
Cześć Mógłby ktoś rzucić okiem i podpowiedzieć co jest nie tak ?
Oto kod:http://ideone.com/6Y8kPc36
Chciałbym wrócić do początku tego wątku,
Ktoś, z czytających, ma pomysł lub doświadczył działania programu poniżej 0.00 sek?
Dodam iż mi się udało w 0.15 sek.
Ciekawią mnie inne rozwiązania niż sam dokonałem w C++ (5.1).
Rozwiazanie zawarłem w pętli do...while, czyli wykonuj dzielenia badanej liczby przez "j" (gdzie j=2) nastepnie j++, aż do momentu gdy potęga kwadratowa z "j" bedzie wieksza od liczby badanej.
Jezeli wynik dzielenia będzie kiedykolwiek ==0 to "NIE"
Plus dodatkowy warunek dla "2".