• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczby pierwsze - spoj

Object Storage Arubacloud
0 głosów
516 wizyt
pytanie zadane 24 lutego 2017 w C i C++ przez maria_d Nowicjusz (170 p.)
Zadanie dotyczy sprawdzenia, czy podana liczba jest liczbą pierwszą (http://pl.spoj.com/problems/PRIME_T/)

Sprawdzałam kod do 100, działa poprawnie, a jednak sędzia w SPOJ twierdzi, że błędna odpowiedź.

Gdzie jest błąd?

#include <iostream>

using namespace std;

int main()
{
    int n;
    //cout << "Podaj ile testow: " ;
    cin>>n;
    for(int j=1; j<=n; j++)
        {
        int liczba, i=1;
        float c;
        // cout << "Podaj liczbe do sprawdzenia: " ;
        cin>>liczba;
            if(liczba==2)
                cout<<"tak"<<endl;
            else if(liczba==1)
                cout<<"nie"<<endl;
            else
            {
                do
                {
                    i++;
                    c=(float)liczba/i;
                    //      cout<<"dla i = "<<i<<" c = "<<c<<endl;
                }      
                while(liczba%i!=0);

                if(c==1) //czyli jezeli liczba jest podzielna tylko przez sama siebie
                cout<<"tak"<<endl;
                else
                cout<<"nie"<<endl;
            }
        }

    return 0;
}

2 odpowiedzi

0 głosów
odpowiedź 24 lutego 2017 przez Michał Gibas Pasjonat (19,610 p.)
wybrane 24 lutego 2017 przez maria_d
 
Najlepsza
W zadaniu każą ci wypisać "TAK" i "NIE" wielkimi literami.

Pozdrawiam!
komentarz 24 lutego 2017 przez maria_d Nowicjusz (170 p.)
Taaaaa.....
0 głosów
odpowiedź 30 marca 2017 przez nosfaratu Nowicjusz (160 p.)
nie wiem czemu Spoj wyrzuca mi błąd kod sprawdziłem chyba na wszystkie sposoby:

#include <iostream>

using namespace std;
int n =0;
int a =0;
int main()
{

    cin>>n;
    int *tab;
    tab =new int[n];

    for(int i =0; i<n ;i++)
    {
        cin>>a;
        tab[i]=a;
    }
    for (int i=0; i<n; i++)
    {
        if(tab[i]==1) cout<<"NIE"<<endl;
        else if (tab[i]==2||tab[i]==3||tab[i]==5||tab[i]==7)
        {
        cout<<"TAK"<<endl;
        }
        else if(tab[i]%2!=0 && tab[i]%3!=0 && tab[i]%5!=0 && tab[i]%7!=0)
        {
            cout<<"TAK"<<endl;
        }
        else{ cout<<"NIE"<<endl;}
    }
    delete [] tab;
    return 0;
}
1
komentarz 30 marca 2017 przez 10kw10 Pasjonat (22,880 p.)
sprawdz liczbe: 121
komentarz 30 marca 2017 przez nosfaratu Nowicjusz (160 p.)
dzięki wielkie
komentarz 30 marca 2017 przez nosfaratu Nowicjusz (160 p.)
kod poprawiony a wychodzi błędna odpowiedź oto nowy kod:

#include <iostream>
#include <math.h>
using namespace std;
int n,a,c;
int main()
{
    cin>>n;
    int *tab;
    tab=new int[n];
    for (int i=0; i<n; i++)
    {
        cin>>a;
        tab[i]=a;
    }
    for(int i=0; i<n; i++)
    {

        if(tab[i]<2) cout<<"NIE"<<endl;
        else if(tab[i]==2||tab[i]==3||tab[i]==5||tab[i]==7) cout<<"TAK"<<endl;
        else
        {
            for(int j=2; j*j<=tab[i]; j++)
            {
                c=sqrt(tab[i]);
                if(tab[i]%j==0 || tab[i]%c == 0)
                {
                    cout<<"NIE"<<endl;
                    break;
                }
                else
                {
                    cout<<"TAK"<<endl;
                    break;
                }
            }

        }
    }
    delete [] tab;
    return 0;
}
komentarz 30 marca 2017 przez 10kw10 Pasjonat (22,880 p.)
155
komentarz 30 marca 2017 przez nosfaratu Nowicjusz (160 p.)
Masz jakiś program lub technikę testowania?
komentarz 30 marca 2017 przez 10kw10 Pasjonat (22,880 p.)
Nie, wpisuje randomowe liczby i patrze na wynik.

Kazda liczba jest podzielna przez 1 i przez nia sama. Musisz sprawdzic czy jest jakiś dzielnik od 2 do liczba-1,jesli tak to znaczy ze nie jest pierwsza, w przeciwnym wypadku jest pierwsza.

Dzielniki liczby sa zawsze mniejsze lub rowne jej samej.

Podobne pytania

0 głosów
0 odpowiedzi 197 wizyt
pytanie zadane 1 sierpnia 2023 w C i C++ przez Jakub005 Początkujący (310 p.)
0 głosów
1 odpowiedź 389 wizyt
0 głosów
2 odpowiedzi 512 wizyt
pytanie zadane 18 września 2020 w C i C++ przez patrykos125 Nowicjusz (170 p.)

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...