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

question-closed SPOJ Liczby pierwsze C++

Object Storage Arubacloud
0 głosów
1,655 wizyt
pytanie zadane 11 lipca 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 14 lipca 2017 przez Jakub 0

Hej ,na początek powiem że zdaje sobie sprawę z tego że w regulaminie forum jest rada odnośnie nie wrzucania całego kodu ze zadaniami z serwisu SPOJ , jednak fragment i tak nie jest zaakceptowany przez "sędziego" i myślę że napisałem go w nie typowy sposób ,poza tym ograniczę jego fragment do minimum  by było wiadomo o co chodzi .No więc wziąłem się za rozwiązanie pierwszego zadania z serwisu SPOJ o ID 438 na tema liczb pierwszych . Napisałem taki o to programik :



int main()
{
    int n, number, mod;
    cin>>n;

    for(int i=0; i<n; i++)
    {
        cin>>number;

        if(number==1||number==2) cout<<"TAK"<<endl; //jezeli jeden lub 2 to jest to liczba pierwsza 
        else
        {
            for(int j=number-1; j>=2; j--) //dzielimi przes liczby mniejsze od niej 
            {
                mod=number%j;
                if(mod==0) {cout<<"NIE"<<endl; break;} //jak reszta wyjdzie zero to nie jest pierwsza 
            }
            if(mod==1) {cout<<"TAK"<<endl;} //jak jeden to jest pierwsza 
        }
    }

    return 0;
}

Działa on "moim zdaniem" poprawnie ale sędzia mi go nie akceptuje ,wiem oczywiście że jest to tylko algorytm i ma prawo nie zinterpretować kodu dokładnie ale mimo wszystko chciałbym by mi zaliczył zadanie . Wiem że mogłem patrzyć do innych kodów ale nie wiem co jest nie tak w moim . A co wy sądzicie ? co jest nie tak ? Dziękuje za wszelką pomoc w komentarzach ... :)

komentarz zamknięcia: Już znam odpowiedz
1
komentarz 11 lipca 2017 przez vector Dyskutant (9,200 p.)

Input:
3
11
1
4

Output:
TAK
NIE
NIE

if(number==1||number==2) cout<<"TAK"<<endl;

I dziwisz się że Ci nie akceptuje ?

komentarz 11 lipca 2017 przez niezalogowany
Zła kategoria
komentarz 11 lipca 2017 przez Jakub 0 Pasjonat (23,120 p.)
P.Mirosław mówił że to nie ma różnicy kiedy jest wyświetlana odpowiedź ... Z zadaniem o prędkości średniej też wyświetlał się wynik od razu i nie było problemu .
komentarz 11 lipca 2017 przez Jakub 0 Pasjonat (23,120 p.)
czemu zła ?
komentarz 11 lipca 2017 przez Jakub 0 Pasjonat (23,120 p.)
Do tego zmieniłem odpowiedź na to że jeden nie jest liczbą pierwszą i wciąż jest źle
1
komentarz 11 lipca 2017 przez niezalogowany

Bo istnieje kategoria dedykowana pod zadania ze SPOJ (Programowanie > SPOJ)

1 odpowiedź

0 głosów
odpowiedź 11 lipca 2017 przez niezalogowany
edycja 30 sierpnia 2017

1. Liczba 1 nie jest liczbą pierwszą.
2. Iteruj zmienne pętli od j=2 do j<number (albo od matematycznego warunku, którego nie pamiętam teraz). Gdy iterujesz od końca Twój program będzie wolniejszy. Przykład: 1 10000
10000 % 9999
% 9998
% 9997
Pierwszy dzielnik znajdzie się po długim czasie. Gdybyś szedł w drugą stronę sprawdzone zostaną najczęściej występujące dzielniki np 2,3,5 itd. Program zadziała trzy/cztery razy szybciej.

Kod:

#include <iostream>
using namespace std;

int main()
{
    int n, number, mod;
    cin>>n;

    for(int i=0; i<n; i++)
    {
        cin>>number;

		if(number < 2) cout<<"NIE"<<endl;
        else if(number==2) cout<<"TAK"<<endl; 
        else
        {
            for(int j=2; j<number; j++)
            {
                mod = number%j;
                if(mod==0)
                {
                    cout<<"NIE"<<endl;
                    break;
                }
            }
            if(mod==1) // dalbym mod!=0 bo jest troche bardziej logiczne gdybyś zmniejszyl zakres petli 
            {
                cout<<"TAK"<<endl;
            }
        }
    }

    return 0;
}
komentarz 14 lipca 2017 przez Jakub 0 Pasjonat (23,120 p.)
Dzięki , działa

Podobne pytania

0 głosów
0 odpowiedzi 202 wizyt
pytanie zadane 1 sierpnia 2023 w C i C++ przez Jakub005 Początkujący (310 p.)
0 głosów
1 odpowiedź 1,017 wizyt
pytanie zadane 4 maja 2019 w SPOJ przez Psz3mo Mądrala (5,030 p.)
–1 głos
1 odpowiedź 835 wizyt
pytanie zadane 6 stycznia 2018 w C i C++ przez Admin Cpp Początkujący (350 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 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!

...