@shaggy1990
Druga wersja jest bardziej skopana, a pierwsza prawie dobra. Popraw tylko w pierwszej wersji odpowiedź dla liczby = 2.
Witam, na wstępie zaznaczę, iż jestem zielony jak szczypiorek w kwestii szeroko pojętego programowania więc prosiłbym o uwagi co do kodu wytłumaczone jak dla głąba . Napisałem kod, przeprowadziłem testy, zmodyfikowałem kod i wydaje mi się, iż mimo że nie jest najschludniejszy, działa poprawnie. Niestety Sędzia uważa inaczej...
https://ideone.com/XiwXwu34
Witam, czy mógłby ktoś podpowiedzieć co jest nie tak w moim rozwiązaniu? Dla danych wejściowych podanych w zadaniu mój program działa, jednak dla danych wejściowy tj. 1111 , 3333, 5555 czy 9999 podaje błędną odpowiedź.
kod na spoju jest widoczny tylko dla właściciela i autora zadania.
wskazane jest podawanie kodu zadania poprzez umieszczenie na ideone.com3 i podanie linku
jeżeli znasz dane, dla których działa źle, to w zasadzie jest to już tylko twój problem - ja z zasady ograniczam się do podania danych dla których program źle działa
Przepraszam, nie wiedziałem. Podaję poprawny link
https://ideone.com/v1CwPz12
Czy zauważyłeś, że [na ideone.com]:
Standard input is empty
PS
Możesz przy okazji zerknąć tu: http://discuss.spoj.com/t/liczby-pierwsze/21685/2
PS 2
Nie zauważyłem, że jest tam przede wszystkim compilation error
twój program nawet dla danych:
1
9
daje zły wynik- https://ideone.com/JAh5LD13
zrobiłeś błąd w funkcji czy_pierwsza.
W tym miejscu:
if (n%i==0)
return false ;
else return true ;
usuń else i powinno działać
PS Twój program sprawdza czy liczba jest pierwsza poprzez sprawdzanie z każdą liczbą całkowitą. Zastanów się jak by to skrócić
include
using namespace std;
int main(int argc, char** argv) {
int p,l;
cin>>p;
for(int i=1;i<=p;i++){
cin>>l;
if(l==2||l==3||l==5||l==7) cout<<"TAK"<<endl;
else if(l==1) cout<<"NIE"<<endl;
else if(l!=2&&l!=3&&l!=5&&l!=7){
if(l%2==0||l%3==0||l%5==0||l%7==0) cout<<"NIE"<<endl;
else cout<<"TAK"<<endl;
}
if(l==2||l==3||l==5||l==7) cout<<"TAK"<<endl;
}
return 0;
}
Możecie mi powiedziec co tu jest nie tak?
Cześć,
ja również walczę z tym zadaniem.w języku C++
Mój kod to:
#include <iostream>
using namespace std;
float liczba[3];
int ile;
bool czy_pierwsza(int n)
{
if (n<2)
return false; //gdy liczba jest mniejsza niż 2 to nie jest pierwszą
for (int i = 2; i*i <= n; i++)
if (n%i == 0)
return false; //gdy znajdziemy dzielnik, to dana liczba nie jest pierwsza
return true;
}
int main()
{
int ile;
cin >> ile;
for (int i=0;i<ile;i++)
{
cin >> liczba[i];
if (czy_pierwsza(liczba[i]) && liczba[i] <2)
{
cout << "TAK" << endl;
}
else cout << "NIE" << endl;
}
system("PAUSE");
return 0;
}
sędzia wyrzuca mi :błąd wykonania (SIGSEGV), Podejrzewam, że chodzi o przedział n<1000000 ale pewności nie mam. Z góry dziękuje za wszelkie sugestie.