29 / 277
Aug 2016

sorry nie zauważyłem tego że liczbę 121 pokazuje mi ze jest to liczba pierwsza chociaż nie jest ale co dziwne jak sprawdzam wielkie liczby to działa dobrze 5303 TAK 5011 TAK 5009 TAK 5483 TAK muszę zobaczyć co jest z tymi liczbami.

Zwyczajnie sprawdzasz za mało pierwszych. Ten kod działa ci dla liczb które mają jakiś dzielnik >2 i <11, niezależnie od ilości cyfr w liczbie (byle się w int zmieściła)

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;

}

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