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

Prosty program wypisujący dla danej liczby czy jest pierwsza

VPS Starter Arubacloud
0 głosów
603 wizyt
pytanie zadane 3 lutego 2017 w C i C++ przez warior1 Użytkownik (520 p.)

(Język C)Wykonałem program który powinien pokazać dla n liczb czy są pierwsze czy też nie . Niestety popełniłem jakiś błąd bo program po jednokrotnym przejściu pętli się kończy.Czy wiecie jak zmienić program aby wypisywał tak lub nie dla każdej wprowadzonej liczby ? Jakieś sugestie ?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,n,p,liczba[4];
    p=2;
    printf("Podaj ilosc liczb do wypisania ");
    scanf("%d",&n);
    for  (i=0;i<n;i++)
        {
   printf("Podaj licbe wieksza od 2 ");
   scanf("%d",&liczba[0]);
   if(liczba[0]<2){printf("NIE");}
   for (i=0;i<n;i++){
   if(liczba[0]==p ){printf("TAK");}
    else if(liczba[0]%p==0){printf("NIE");}
    p=p+1;
    }
    return 0;
}
}

 

4 odpowiedzi

0 głosów
odpowiedź 3 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
edycja 3 lutego 2017 przez 10kw10

Nie znam sie na c ale czy tu nie powinno byc:


scanf("%d",&liczba[i]);

 

 

komentarz 4 lutego 2017 przez warior1 Użytkownik (520 p.)
Mój program potrzebuje wczytać tylko 3 liczby wiec chyba liczba[4] wystarczy
komentarz 4 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
Chcesz zeby mozna bylo podac wszystkie a potem wypisac czy dana jest pierwsza, czy od razu po podaniu ma wypisac wynik ?

Jesli ta druga opcja to nie potrzebna ci tablica, troche sie gubie gdzie sie te petle koncza ale jesli sa zagniezdzone(jedna w drugiej) to masz 2 razy ten sam iterator. Jesli w if jest tylko jedna instrukcja to nie potrzebne ci sa klamry.
0 głosów
odpowiedź 3 lutego 2017 przez Evelek Nałogowiec (28,960 p.)
Masz 2 klamerki poza funkcją main(). Przerzuć jedną z nich przed wiersz z return 0;.
komentarz 4 lutego 2017 przez warior1 Użytkownik (520 p.)
Zmieniłem ale dalej działa źle
0 głosów
odpowiedź 5 lutego 2017 przez Mikołaj Kawczynski Dyskutant (9,160 p.)
Wypisz n przed przejechaniem pętli i przy każdym przejechaniu. Apropo twój program jest strasznie niewydajny bo dzielnik nie może być większy niż 1/2 liczby więc jak masz 10 to dzielnik może być maks 5 jak 20 to maks 10. Wieć powinieneś to 1/2 n liczyć połowa mniej sprawdzania ;)
komentarz 5 lutego 2017 przez koczurekk Gaduła (3,420 p.)
Twój algorytm też jest masakrycznie wolny, dalej masz złożoność liniową. Dzielnik nie może być większy od pierwiastka kwadratowego danej liczby. I nie trzeba sprawdzać wszystkich po drodze - tylko nieparzyste + uprzednie sprawdzenie czy modulo 2 =/= 0.
komentarz 5 lutego 2017 przez niezalogowany
Myślisz, że sprawdzenie modulo 2 != 0 za każdym razem będzie wydajniejsze niż skreślenie parzystych w pierwszym przelocie sita?
komentarz 5 lutego 2017 przez koczurekk Gaduła (3,420 p.)
Gdzie ty tu widzisz sito? To dyskusja o sprawdzeniu pętlą czy liczba ma dzielniki. Jakiekolwiek sito to ewidentnie nie poziom autora pytania.
komentarz 5 lutego 2017 przez niezalogowany
A on nie pisze sita? Wydawało mi się, że sito robi. Program dziwnie formatowany, nie chciało mi się analizować. Znalazłem return w miejscu od czapy, to powiedziałem, bo pytał, czemu mu się wyłącza przy 1 przebiegu. Widzę pętlę w pętli, to myślałem, że to sito.
komentarz 5 lutego 2017 przez koczurekk Gaduła (3,420 p.)
Nope, z tego co widzę próbuje sprawdzić pierwszość 4 liczb. W każdym razie do tego dużo bliżej temu czemuś niż do sita.
–1 głos
odpowiedź 5 lutego 2017 przez niezalogowany
Bez analizowania sensowności programu, bo mi się nie chce, to masz return 0 w pętli. Więc ta pętla się skończy po 1 przebiegu, bo return z niej wychodzi.

Formatuj właściwie kod (W CodeBlocks możesz wybrać PKM –> format as AStyle), bo na razie masz dziką kaszanę i sam nie widzisz co w czym lata.

Podobne pytania

0 głosów
3 odpowiedzi 3,547 wizyt
0 głosów
1 odpowiedź 335 wizyt
pytanie zadane 13 listopada 2019 w C i C++ przez adeptc Nowicjusz (160 p.)
0 głosów
1 odpowiedź 1,498 wizyt
pytanie zadane 23 października 2018 w C i C++ przez jednorożec Nowicjusz (220 p.)

92,832 zapytań

141,776 odpowiedzi

320,822 komentarzy

62,162 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

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!

...