32 / 277
Aug 2016

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

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;
}

Dla dwójki był błąd. Nie wiem jak mogłem to przeoczyć. Dziękuję i przepraszam za kłopot

9 days later

szkoda, że nie nie przeczytałeś tego wątku przed napisaniem swojego pytania :slight_smile:

77 ?

@esbe

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".

poniżej 0.00 się nie da :slight_smile:

ale już poniżej 0.005 tak - prawidłowy algorytm + szybkie wczytywanie

sam prawidłowy algorytm daje czas 0.01 (operacje wejścia/wyjścia scanf()/printf(), a nie cin/cout)

8 days later
15 days later

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 ;
}

W takim razie, przeczytaj [uważnie] jeszcze raz albo aż do skutku, treść zadania - w końcu to tylko 3 zdania. Potem [dokładnie] przeanalizuj podany tam przykład, najlepiej metodą kartka i ołówek.

4 months later

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++) :wink:
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).