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

Własna funkcja sprawdzająca czy jest liczbą pierwszą

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
857 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam 

Ostatnio zajęciach dostałem zadanie o treści:

Napisz funkcje zwracajaca (przez return) liczbe:
 1 - w przypadku gdy podana jako parametr funkcji liczba jest liczba pierwsza lub
 0 - gdy podana liczba nie jest pierwsza.

Napisałem program , który na pierwszy rzut oka działa bez problemu ale gdy (od 2 do 15 sprawdzałem po koleji i działa) ale gdy sobie wpisałem 27 to pokazuje mi że jest liczbą pierwszą a przecież ma 3 dzielniki 1,3,27 więc nie może być liczbą pierwszą.Niestety nie mogę znaleźć przyczyny takiego działania programu.Czy ktoś

#include <stdio.h>
#include <stdlib.h>
int pierwsza(int liczba)
{
    int i, w=1;

    if(liczba<2) w=0;
    for(i=2; i<=liczba-1; i++)
    {
        if(liczba%i == 0)
        {
            w=0;
            return(0);
        }
        else
        {
            return(1);
        }
    }
    return(w);
}
int main(void)
{
    int liczba,wynik;
    printf("Podaj liczbe, sprawdze czy jest liczba pierwsza: ");
    scanf("%d", &liczba);
    wynik=pierwsza(liczba);
    if(wynik==1)
        printf("Liczba %d jest pierwsza\n\n", liczba);
    else
    {
        printf("Liczba %d nie jest pierwsza\n\n", liczba);
    }
    system("pause");
    return(0);
}



może mi pomóc w znalezieniu problemu?.Pozdrawiam

1 odpowiedź

+1 głos
odpowiedź 20 listopada 2017 przez niezalogowany
wybrane 20 listopada 2017 przez mn130496
 
Najlepsza
Return wewnątrz if'a to błąd w tym przypadku, w rezultacie "pętla" ci nie działa
komentarz 20 listopada 2017 przez mn130496 Gaduła (3,530 p.)
ok dziękuje za pomoc
komentarz 20 listopada 2017 przez mokrowski Mędrzec (157,200 p.)
Stosujesz także mało wydajny algorytm. Nie ma sensu iterować do samej liczby (czy nawet liczba -1). Wystarczy sprawdzić czy i do kwadratu nie jest większe niż liczba. Po pierwiastku kwadratowym z liczby, z całą pewnością nie będzie dzielników :-)

Podobne pytania

+1 głos
1 odpowiedź 1,623 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez artur96 Początkujący (250 p.)
0 głosów
2 odpowiedzi 793 wizyt
pytanie zadane 3 lutego 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 2,054 wizyt

93,195 zapytań

142,211 odpowiedzi

322,058 komentarzy

62,519 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3316p. - dia-Chann
  2. 3251p. - Łukasz Piwowar
  3. 3243p. - Łukasz Eckert
  4. 3222p. - CC PL
  5. 3167p. - Tomasz Bielak
  6. 3157p. - Łukasz Siedlecki
  7. 3133p. - rucin93
  8. 3110p. - Maurycy W
  9. 3028p. - Adrian Wieprzkowicz
  10. 2992p. - Mikbac
  11. 2490p. - Marcin Putra
  12. 2467p. - Michał Telesz
  13. 2427p. - Michal Drewniak
  14. 2372p. - Anonim 3619784
  15. 1949p. - rafalszastok
Szczegóły i pełne wyniki

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!

...