Pawiczenko Napisano Styczeń 8, 2023 Zgłoś Udostępnij Napisano Styczeń 8, 2023 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") Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
learn code with me Napisano Wrzesień 9, 2023 Zgłoś Udostępnij Napisano Wrzesień 9, 2023 to podejście do sprawdzenia, czy liczba jest pierwsza, jest bliskie, ale nie do końca 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.