Skocz do zawartości

Problem, zmienne typu bool


Pawiczenko

Recommended Posts

Byłbym wdzięczny za pomoc w prostym zadaniu.
Nie rozumiem dlaczego przy podaniu liczby pierwszej np. 9 nie jest generowana taka informacja .
Z góry dziękuję za pomoc i przepraszam, ale dopiero się uczę. ;)
 

liczba = int(input("podaj liczbę dowolna"))

liczbapierwsza = True

for dzielnik in range (2,liczba+1):
    if liczba % dzielnik == 0:
        liczbapierwsza = False
        print("podana liczba", liczba, "jest podzielna przez", dzielnik)

if liczbapierwsza:
    print("podana liczba jest liczba pierwsza")
Link do komentarza
Udostępnij na innych stronach

  • 8 months later...

to podejście do sprawdzenia, czy liczba jest pierwsza, jest bliskie, ale nie do końca :D
głównym problemem jest to, że zaczynasz pętlę for od 2 i idziesz aż do samej liczby, co oznacza, że zawsze znajdziesz przynajmniej jeden dzielnik (samą liczbę), co sprawia, że liczba pierwsza zawsze będzie False.

liczba = int(input("Podaj dowolną liczbę: "))

liczbapierwsza = True

for dzielnik in range(2, int(liczba ** 0.5) + 1):
    if liczba % dzielnik == 0:
        liczbapierwsza = False
        print("Podana liczba", liczba, "jest podzielna przez", dzielnik)
        break  # Jeżeli znajdziemy jakikolwiek dzielnik, możemy przerwać pętlę

if liczbapierwsza and liczba > 1:  # 1 nie jest liczbą pierwszą
    print("Podana liczba jest liczbą pierwszą")
else:
    print("Podana liczba nie jest liczbą pierwszą")

należy przerwać pętlę po znalezieniu pierwszego dzielnika (stąd break), ponieważ wtedy już wiemy, że liczba nie jest pierwsza
użycie pierwiastka kwadratowego liczby jako górnego limitu pętli for jest bardziej wydajne, ale nie jest to konieczne dla tego zadania po prostu to standardowe zadanie jak wygooglasz to zobaczysz matematyczne tłumaczenia skąd pierwiastek

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...