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

sprawdzenie poprawności kodu programu do sprawdzania czy liczba jest liczbą pierwszą

Aruba Cloud - Virtual Private Server VPS
0 głosów
907 wizyt
pytanie zadane 6 listopada 2017 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam 

jestem studentem pierwszego roku informatyki. Ostatnio na laboratoriach otrzymałem zadanie o treści:

Zad. 8 
Wprowadz liczbe calkowita N. 
a) sprawdz czy N jest liczba pierwsza,
b) sprawdz, ile liczb z zakresu 2..N jest liczbami pierwszymi.

Napisałem program, którego  zadaniem jest sprawdzenie czy liczba jest pierwsza , niestety program nie działa poprawnie (dla każdej liczby pokazuje, że jest pierwsza). Czy ktoś może sprawdzić  mój kod i powiedzieć mi gdzie jest błąd ?. Chciałbym się jeszcze dowiedzieć jak podsumować wszystkie liczby pierwsze z zakresu  od 2 do N i wyświetlić stosowny komunikat. Dodam jeszcze ,że program muszę napisać w języku C a nie C++.Proszę o szybkom odpowiedź.

Pozdrawiam

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

int main(void)
{
    int i;
    int n;
    printf("Podaj liczbe n:");
    scanf("%d", &n);
    for(i=2; i<=n; i++);
    {
        if(n%i==0)
        {
            printf(" Liczba %d nie jest liczba pierwsza: ",n);
        }
        else
        {
            printf(" Liczba %djest pierwsza: ",n);
        }
    }
    return (0);
}

 

komentarz 6 listopada 2017 przez m4sk1n Pasjonat (16,750 p.)
Przede wszystkim, jeżeli liczba nie jest pierwszą, powinieneś breaknąć, zakończyć działanie pętli. Po drugie, stwierdzenie o byciu liczbą pierwszą powinno znaleźć się poza pętlą, jeżeli ta pętla nie zwróci „niepierwszości”. Po trzecie – i<n.
komentarz 6 listopada 2017 przez mn130496 Gaduła (3,530 p.)

ok a mógłbyś zobaczyć co teraz jest źle bo wywala mi problem inie wiem o co chodzi?

komentarz 6 listopada 2017 przez m4sk1n Pasjonat (16,750 p.)
dajesz…
komentarz 6 listopada 2017 przez mn130496 Gaduła (3,530 p.)
sorry już udało mi się rozwiązać problem wszystko działa jak należy dziękuję ci za pomoc a wiesz może jak wyświetlić ile liczb pierwszych jest w przedziale od 2 do n?
komentarz 6 listopada 2017 przez Marchiew Dyskutant (7,730 p.)
Jeżeli to ma być w tym samym zadaniu to pokaż co masz teraz
komentarz 7 listopada 2017 przez mn130496 Gaduła (3,530 p.)

to muszę zrobić jako osobny projekt

1 odpowiedź

0 głosów
odpowiedź 6 listopada 2017 przez CzikaCarry Szeryf (75,340 p.)

Kod sam w sobie prawie poprawny (oprócz tego, że przy każdej iteracji pętli program będzie wypluwał do konsoli, czy liczba jest pierwsza czy nie mimo nie zakończenia operacji), ale lepiej go przebuduj:

  • Sprawdzanie, czy liczba jest liczbą pierwszą wstaw do funkcji zwracającej bool
  • Można poprawić performance algorytmu (np. Poprzez szukanie dzielników liczby tylko do i >= sqrt(n), lub poprzez sprawdzanie tylko nieparzystych dzielników (wyjątkiem jest 2))

Podobne pytania

0 głosów
3 odpowiedzi 601 wizyt
pytanie zadane 6 grudnia 2017 w C i C++ przez Newaz Użytkownik (880 p.)
+1 głos
1 odpowiedź 754 wizyt
+1 głos
1 odpowiedź 1,997 wizyt

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...