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".
Cześć,
wydaje mi się , że sprawdziłem wszystkie podane liczby i jest ok,
ale SPOJ nadal odrzuca. Byłbym wdzięczny za wskazówkę.
http://ideone.com/vvHV5D55
Pozdrawiam
http://ideone.com/105 <--- tu była podpowiedź
Witam odnowie temat , wiem że wiele osób już o to pytało, ale zaptam i ja. Co robię źle z kodem, wydaje mi się poprawny sprawdziłem wszytkie warianty błedów z tego forum , a i tak sedzia ocenia mnie negatywnie... oto mój kod.
#include <iostream>
using namespace std;
int main()
{
int liczba;
for(int n=0;n<1000000;n++)
{
cin>>liczba;
if(liczba<2)
{
cout<<"NIE"<<endl;
}
else
{
for (long int p=2; p<=liczba; p++)
{
if(liczba==p)
{
cout<<"TAK"<<endl;break;
}
if(liczba%p==0)
{
cout<<"NIE"<<endl;break;
}
}
}
}
return 0 ;
}
Witam, możliwe że mam w kodzie problem, który już w tym wątku wystąpił, ale niestety nie mogę go znaleźć, będę bardzo wdzięczny za pomoc, starałem się dokładnie komentarzami opisać mój tok rozumowania (jbc kod w c++)
https://ideone.com/jS7Vb522
Taki test:
2
4
2
Niepotrzebnie skomplikowałeś sobie życie zmienną "pierwsza". Jeśli chcesz jej używać w ten sposób, to nie może mieć ona staniu nieokreślonego, tj. musi być inicjalizowana.
Dodatkowo w celach edukacyjnych możesz się zastanowić, skąd taka, a nie inna jej wartość przy drugim przebiegu pętli dla powyższego testu (czyli sprawdzaniu, czy 2 jest pierwsze).
TAK, masz!
Tok rozumowania jest całkowicie poprawny [ale możnaby go jeszcze "lekko podrasować" - czytaj przyśpieszyć - ale to już inna bajka]. Natomiast kod już nie jest dobry i nawet komentarze nic tu nie zmienią. W tym wypadku, pomagający mają w małym paluszku cały algorytm i najczęściej taki miejscami nadmiarowy miejscami błędny, miejscami za długi komentarz tylko zaciemniają [na mój gust] kod.
jbc, ideone po prawej stronie, na środku, małymi literami napisał to
Kiepsko szukałeś - czytaj testowałeś. Np zobacz:
https://ideone.com/uN4S9A38
Dzięki za pomoc, nie zauważyłem tego błędu dla liczby 2, gdy to zmieniłem zadziałało
Domyślam się, że kod jest słabej jakości, są to dopiero moje początki, sam fakt, że mam problem z takimi zadaniami to pokazuje Dzięki za porady, nad samym zapisem toku rozumowania muszę dużo pracować, bo jak na razie to jest wszystko chaotyczne i niespójne, ale mam nadzieję, że w miarę ćwiczeń będzie coraz czyściej i przejrzyściej.
Witam!
Stworzyłem funkcję bool sprawdzającą, czy liczba jest pierwsza, program działa, sędzia odrzuca.
https://ideone.com/CK47MU22
Napisałem też takie coś, już bez funkcji, działa poprawnie, ten sam problem, sędzia odrzuca.
https://ideone.com/imOruq12
Co robię nie tak?
Raczej za dobrze to te programy nie działają.
Sprawdź np:
6
1
2
3
21
22
33
Jest mnóstwo tematów dotyczących tego zadania, tam już powiedziano wszystko, co można .
Zdecyduj się na jedną wersję (moim zdaniem lepsza ta z dodatkową funkcją) i ją rozwijaj, aż zadziała. Algorytm, który próbujesz zaimplementować powinien być wystarczająco szybki, żeby dostać AC (chociaż ludzkości znane są szybsze ).
@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