• 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
853 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 (156,480 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,622 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez artur96 Początkujący (250 p.)
0 głosów
2 odpowiedzi 791 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,190 zapytań

142,205 odpowiedzi

322,031 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2738p. - CC PL
  5. 2704p. - Tomasz Bielak
  6. 2678p. - Łukasz Siedlecki
  7. 2666p. - rucin93
  8. 2485p. - Marcin Putra
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2239p. - Michał Telesz
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
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!

...