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')
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???
- 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;
}