• 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
803 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,260 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,605 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez artur96 Początkujący (250 p.)
0 głosów
2 odpowiedzi 755 wizyt
pytanie zadane 3 lutego 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 2,031 wizyt

93,109 zapytań

142,088 odpowiedzi

321,611 komentarzy

62,450 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!

...