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

Object Storage Arubacloud
0 głosów
630 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 (155,460 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,379 wizyt
pytanie zadane 20 listopada 2017 w C i C++ przez artur96 Początkujący (250 p.)
0 głosów
2 odpowiedzi 553 wizyt
pytanie zadane 3 lutego 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 1,793 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...