• 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ą

0 głosów
1,026 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez mn130496 Gaduła (3,570 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,570 p.)
ok dziękuje za pomoc
komentarz 20 listopada 2017 przez mokrowski Mędrzec (158,940 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,798 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez artur96 Początkujący (250 p.)
0 głosów
2 odpowiedzi 1,009 wizyt
pytanie zadane 3 lutego 2018 w C i C++ przez mn130496 Gaduła (3,570 p.)
0 głosów
1 odpowiedź 2,213 wizyt

93,630 zapytań

142,551 odpowiedzi

323,054 komentarzy

63,134 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2174p. - dia-Chann
  2. 2077p. - raydeal
  3. 2034p. - DziarnowskiJ
  4. 2005p. - Łukasz Piwowar
  5. 1989p. - CC PL
  6. 1957p. - Maurycy W
  7. 1954p. - Adrian Wieprzkowicz
  8. 1782p. - rucin93
  9. 1777p. - robwarsz
  10. 1743p. - Michal Drewniak
  11. 1701p. - rafalszastok
  12. 1588p. - Tomasz Bielak
  13. 1491p. - Rafał Trójniak
  14. 1377p. - ssynowiec
  15. 1208p. - Mariusz Fornal
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

Kursy INF.02 i INF.03
...