Liczby pierwsze i bliźniacze

Liczby pierwsze bliźniacze
Definicja: Liczby pierwsze bliźniacze

Liczby pierwsze bliźniacze to kolejne liczby pierwsze, których różnica wynosi 2.

Przykładem takich liczb są pary: 7173 lub 137139.

1
Przykład 1

Przygotujmy kod, który – wśród liczb pierwszych – pozwoli odnaleźć liczby bliźniacze. W tym przypadku przygotujemy funkcję obliczającą liczby pierwsze w przedziale  2 , n  metodą Eratostenesa (więcej na jej temat znajdziesz w e‑materiale Sito EratostenesaP7MwVxKT0Sito Eratostenesa). Następnie zbadamy, które spośród znalezionych liczb pierwszych spełniają warunki liczb bliźniaczych. Działanie naszego programu sprawdzimy, szukając liczb bliźniaczych do liczby 80.

Specyfikacja:

Dane:

  • n – górna granica przedziału; liczba naturalna, większa od 2

Wynik:

Program ma znaleźć i wypisać pary liczb bliźniaczych w zadanym przedziale.

Zaczynamy od zaimplementowania funkcji wyszukującej wszystkie liczby pierwsze w przedziale 2 , n . Tworzymy definicję naszej funkcji. Następnie przygotowujemy dwie listy: lista_liczb, która będzie przechowywała znalezione liczby pierwsze, oraz lista, która będzie służyła do przechowywania wykreślonych liczb (wartość True oznacza, że liczba nie została jeszcze wykreślona).

Linia 1. def sito podkreślnik eratostenesa otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 2. lista podkreślnik liczb znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. lista znak równości otwórz nawias kwadratowy True zamknij nawias kwadratowy asterysk otwórz nawias okrągły n plus 1 zamknij nawias okrągły.

Następnie tworzymy pętlę, której zadaniem będzie znajdowanie najmniejszej niewykreślonej liczby w danym momencie. Będzie ona działała w przedziale 2 , n . W celu obliczenia pierwiastka, importujemy z biblioteki math funkcję sqrt. Jeżeli obecnie sprawdzana liczba nie była jeszcze wykreślona, to zaczynamy wykreślanie wszystkich jej wielokrotności z tablicy lista. W tym celu tworzymy pętlę odpowiadającą za wyznaczanie kolejnych wielokrotności liczby indeks. Swoje działanie będzie zaczynała od jej dwukrotności i zwiększała wartość o wartość sprawdzanej liczby.

Linia 1. from math import sqrt. Linia 3. def sito podkreślnik eratostenesa otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 4. lista podkreślnik liczb znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 5. lista znak równości otwórz nawias kwadratowy True zamknij nawias kwadratowy asterysk otwórz nawias okrągły n plus 1 zamknij nawias okrągły. Linia 7. for indeks in range otwórz nawias okrągły 2 przecinek int otwórz nawias okrągły sqrt otwórz nawias okrągły n zamknij nawias okrągły zamknij nawias okrągły plus 1 zamknij nawias okrągły dwukropek. Linia 8. if lista otwórz nawias kwadratowy indeks zamknij nawias kwadratowy dwukropek. Linia 9. for indeks podkreślnik 2 in range otwórz nawias okrągły 2 asterysk indeks przecinek n plus 1 przecinek indeks zamknij nawias okrągły dwukropek. Linia 10. lista otwórz nawias kwadratowy indeks podkreślnik 2 zamknij nawias kwadratowy znak równości False.

Kolejnym krokiem będzie odszukanie liczb pierwszych, czyli tych, które nie zostały wykreślone z listy lista. W tym celu tworzymy pętlę, która zapisuje te liczby do listy lista_liczb. Na końcu zwracamy nasz wynik, czyli listę liczb pierwszych znalezionych w podanym przedziale.

Linia 1. from math import sqrt. Linia 3. def sito podkreślnik eratostenesa otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 4. lista podkreślnik liczb znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 5. lista znak równości otwórz nawias kwadratowy True zamknij nawias kwadratowy asterysk otwórz nawias okrągły n plus 1 zamknij nawias okrągły. Linia 7. for indeks in range otwórz nawias okrągły 2 przecinek int otwórz nawias okrągły sqrt otwórz nawias okrągły n zamknij nawias okrągły zamknij nawias okrągły plus 1 zamknij nawias okrągły dwukropek. Linia 8. if lista otwórz nawias kwadratowy indeks zamknij nawias kwadratowy dwukropek. Linia 9. for indeks podkreślnik 2 in range otwórz nawias okrągły 2 asterysk indeks przecinek n plus 1 przecinek indeks zamknij nawias okrągły dwukropek. Linia 10. lista otwórz nawias kwadratowy indeks podkreślnik 2 zamknij nawias kwadratowy znak równości False. Linia 12. for element in range otwórz nawias okrągły 2 przecinek n plus 1 zamknij nawias okrągły dwukropek. Linia 13. if lista otwórz nawias kwadratowy element zamknij nawias kwadratowy dwukropek. Linia 14. lista podkreślnik liczb kropka append otwórz nawias okrągły element zamknij nawias okrągły. Linia 16. return lista podkreślnik liczb.

Przejdźmy teraz do wyszukiwania liczb bliźniaczych. W tym celu, za pomocą zaimplementowanej funkcji, wyszukamy najpierw wszystkie liczby pierwsze z przedziału  2 , n .

Linia 1. liczby podkreślnik pierwsze znak równości sito podkreślnik eratostenesa otwórz nawias okrągły 80 zamknij nawias okrągły. Linia 2. print otwórz nawias okrągły apostrof Liczby pierwsze dwukropek apostrof przecinek liczby podkreślnik pierwsze zamknij nawias okrągły. Linia 3. kratka Wypisze dwukropek. Linia 4. kratka Liczby pierwsze dwukropek otwórz nawias kwadratowy 2 przecinek 3 przecinek 5 przecinek 7 przecinek 11 przecinek 13 przecinek 17 przecinek 19 przecinek 23 przecinek 29 przecinek 31 przecinek 37 przecinek 41 przecinek 43 przecinek 47 przecinek 53 przecinek 59 przecinek 61 przecinek 67 przecinek 71 przecinek 73 przecinek 79 zamknij nawias kwadratowy.

Tworzymy listę liczby_blizniacze, która będzie przechowywała znalezione pary liczb bliźniaczych. Następnie, za pomocą pętli, sprawdzamy każde dwie kolejne znalezione liczby pierwsze z tablicy liczby_pierwsze.

Linia 1. liczby podkreślnik pierwsze znak równości sito podkreślnik eratostenesa otwórz nawias okrągły 80 zamknij nawias okrągły. Linia 2. print otwórz nawias okrągły apostrof Liczby pierwsze dwukropek apostrof przecinek liczby podkreślnik pierwsze zamknij nawias okrągły. Linia 4. liczby podkreślnik blizniacze znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 5. for indeks in range otwórz nawias okrągły 1 przecinek len otwórz nawias okrągły liczby podkreślnik pierwsze zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 6. x0 znak równości liczby podkreślnik pierwsze otwórz nawias kwadratowy indeks minus 1 zamknij nawias kwadratowy. Linia 7. x1 znak równości liczby podkreślnik pierwsze otwórz nawias kwadratowy indeks zamknij nawias kwadratowy. Linia 8. if x1 minus x0 znak równości znak równości 2 dwukropek. Linia 9. liczby podkreślnik blizniacze kropka append otwórz nawias okrągły otwórz nawias okrągły x0 przecinek x1 zamknij nawias okrągły zamknij nawias okrągły. Linia 11. print otwórz nawias okrągły apostrof Liczby blizniacze dwukropek apostrof przecinek liczby podkreślnik blizniacze zamknij nawias okrągły. Linia 12. kratka Wypisze dwukropek. Linia 13. kratka Liczby blizniacze dwukropek otwórz nawias kwadratowy otwórz nawias okrągły 3 przecinek 5 zamknij nawias okrągły przecinek otwórz nawias okrągły 5 przecinek 7 zamknij nawias okrągły przecinek otwórz nawias okrągły 11 przecinek 13 zamknij nawias okrągły przecinek otwórz nawias okrągły 17 przecinek 19 zamknij nawias okrągły przecinek otwórz nawias okrągły 29 przecinek 31 zamknij nawias okrągły przecinek otwórz nawias okrągły 41 przecinek 43 zamknij nawias okrągły przecinek otwórz nawias okrągły 59 przecinek 61 zamknij nawias okrągły przecinek otwórz nawias okrągły 71 przecinek 73 zamknij nawias okrągły zamknij nawias kwadratowy.

Oto kod całego programu:

Linia 1. from math import sqrt. Linia 3. kratka Definicja funkcji. Linia 4. def sito podkreślnik eratostenesa otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 5. lista podkreślnik liczb znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 6. lista znak równości otwórz nawias kwadratowy True zamknij nawias kwadratowy asterysk otwórz nawias okrągły n plus 1 zamknij nawias okrągły. Linia 8. for indeks in range otwórz nawias okrągły 2 przecinek int otwórz nawias okrągły sqrt otwórz nawias okrągły n zamknij nawias okrągły zamknij nawias okrągły plus 1 zamknij nawias okrągły dwukropek. Linia 9. if lista otwórz nawias kwadratowy indeks zamknij nawias kwadratowy dwukropek. Linia 10. for indeks podkreślnik 2 in range otwórz nawias okrągły 2 asterysk indeks przecinek n plus 1 przecinek indeks zamknij nawias okrągły dwukropek. Linia 11. lista otwórz nawias kwadratowy indeks podkreślnik 2 zamknij nawias kwadratowy znak równości False. Linia 13. for element in range otwórz nawias okrągły 2 przecinek n plus 1 zamknij nawias okrągły dwukropek. Linia 14. if lista otwórz nawias kwadratowy element zamknij nawias kwadratowy dwukropek. Linia 15. lista podkreślnik liczb kropka append otwórz nawias okrągły element zamknij nawias okrągły. Linia 17. return lista podkreślnik liczb. Linia 20. kratka Wykonanie funkcji. Linia 21. liczby podkreślnik pierwsze znak równości sito podkreślnik eratostenesa otwórz nawias okrągły 80 zamknij nawias okrągły. Linia 23. print otwórz nawias okrągły apostrof Liczby pierwsze dwukropek apostrof przecinek liczby podkreślnik pierwsze zamknij nawias okrągły. Linia 25. liczby podkreślnik blizniacze znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 26. for indeks in range otwórz nawias okrągły 1 przecinek len otwórz nawias okrągły liczby podkreślnik pierwsze zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 27. x0 znak równości liczby podkreślnik pierwsze otwórz nawias kwadratowy indeks minus 1 zamknij nawias kwadratowy. Linia 28. x1 znak równości liczby podkreślnik pierwsze otwórz nawias kwadratowy indeks zamknij nawias kwadratowy. Linia 29. if x1 minus x0 znak równości znak równości 2 dwukropek. Linia 30. liczby podkreślnik blizniacze kropka append otwórz nawias okrągły otwórz nawias okrągły x0 przecinek x1 zamknij nawias okrągły zamknij nawias okrągły. Linia 32. print otwórz nawias okrągły apostrof Liczby blizniacze dwukropek apostrof przecinek liczby podkreślnik blizniacze zamknij nawias okrągły.

Wynik wywołania kodu będzie następujący:

Linia 1. Liczby pierwsze dwukropek otwórz nawias kwadratowy 2 przecinek 3 przecinek 5 przecinek 7 przecinek 11 przecinek 13 przecinek 17 przecinek 19 przecinek 23 przecinek 29 przecinek 31 przecinek 37 przecinek 41 przecinek 43 przecinek 47 przecinek 53 przecinek 59 przecinek 61 przecinek 67 przecinek 71 przecinek 73 przecinek 79 zamknij nawias kwadratowy. Linia 2. Liczby blizniacze dwukropek otwórz nawias kwadratowy otwórz nawias okrągły 3 przecinek 5 zamknij nawias okrągły przecinek otwórz nawias okrągły 5 przecinek 7 zamknij nawias okrągły przecinek otwórz nawias okrągły 11 przecinek 13 zamknij nawias okrągły przecinek otwórz nawias okrągły 17 przecinek 19 zamknij nawias okrągły przecinek otwórz nawias okrągły 29 przecinek 31 zamknij nawias okrągły przecinek otwórz nawias okrągły 41 przecinek 43 zamknij nawias okrągły przecinek otwórz nawias okrągły 59 przecinek 61 zamknij nawias okrągły przecinek otwórz nawias okrągły 71 przecinek 73 zamknij nawias okrągły zamknij nawias kwadratowy.

Liczby doskonałe

Liczby doskonałe
Definicja: Liczby doskonałe

Liczby doskonałe to liczby naturalne, które są jednocześnie sumą wszystkich swoich dzielników właściwychdzielnik właściwydzielników właściwych.

Przykładem takiej liczby jest 28, ponieważ spełnia ona przedstawiony warunek: 28 = 14 + 7 + 4 + 2 + 1.

Ciekawostka

Jedną z możliwości odnajdywania liczb doskonałych jest sposób opisany przez Euklidesa w IX księdze Elementów.

W celu znalezienia liczby doskonałej należy obliczyć sumy kolejnych potęg liczby 2, a jeśli taka liczba okaże się liczbą pierwszą, wówczas trzeba pomnożyć ją przez ostatni składnik dodawania – w ten sposób otrzymamy liczbę doskonałą.

Przykład:

Badamy kolejno wyrazy:

  • 1 + 2 1 = 3 - jest liczbą pierwszą, czyli 3 2 1 = 6 jest liczbą doskonałą;

  • 1 + 2 1 + 2 2 = 7 - jest liczbą pierwszą, czyli 7 2 2 = 28 jest liczbą doskonałą;

  • 1 + 2 1 + 2 2 + 2 3 = 15 - nie jest liczbą pierwszą;

  • 1 + 2 1 + 2 2 + 2 3 + 2 4 = 31 - jest liczbą pierwszą, czyli 31 2 4 = 496 jest liczbą doskonałą;

  • itd.

1
Przykład 2

Napiszmy program, który wypisze listę liczb doskonałych w przedziale 0 , n . Działanie naszego programu przetestujemy dla n = 10000.

Specyfikacja:

Dane:

  • n - górna granica zakresu; liczba naturalna

Wyniki:

Program ma znaleźć i wypisać liczby doskonałe z podanego przedziału.

Zacznijmy od zdefiniowania funkcji pomocniczej suma_dzielnikow(liczba), która będzie zwracała sumę dzielników właściwych danej liczby. W tym celu, zaczynając od 1, sprawdzamy, czy kolejne liczby są dzielnikami liczby liczba (wynik operacji modulo, operator %, będzie równy 0). Jeżeli tak, to dodajemy do sumy wartość tego dzielnika.

Linia 1. def suma podkreślnik dzielnikow otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 2. suma znak równości 0. Linia 3. dzielnik znak równości 1. Linia 5. while dzielnik otwórz nawias ostrokątny znak równości liczba prawy ukośnik 2 dwukropek. Linia 6. if liczba procent dzielnik znak równości znak równości 0 dwukropek. Linia 7. suma plus znak równości dzielnik. Linia 8. dzielnik plus znak równości 1. Linia 10. return suma.

Następnie stworzymy funkcję czy_doskonala(liczba), która będzie odpowiadała na pytanie, czy dana liczba jest liczbą doskonałą. W tym celu sprawdzamy, czy liczba jest równa sumie dzielników tej liczby.

Linia 1. def czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 2. if liczba znak równości znak równości suma podkreślnik dzielnikow otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 3. return True. Linia 4. return False.

Na samym końcu tworzymy pętlę, która będzie szukała liczb doskonałych w zadanym przedziale. Sprawdzamy kolejne liczby - jeżeli spełniają warunki, zapisujemy je w liście wynikowej i wyświetlamy nasze rozwiązanie.

Linia 1. n znak równości 10000. Linia 3. doskonale znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 4. for liczba in range otwórz nawias okrągły 1 przecinek n zamknij nawias okrągły dwukropek. Linia 5. if czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 6. doskonale kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 8. print otwórz nawias okrągły apostrof Liczby doskonałe dwukropek apostrof przecinek doskonale zamknij nawias okrągły.

Oto kod całego programu:

Linia 1. kratka Obliczanie sumy dzielnikow wlasciwych. Linia 2. def suma podkreślnik dzielnikow otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 3. suma znak równości 0. Linia 4. dzielnik znak równości 1. Linia 6. while dzielnik otwórz nawias ostrokątny znak równości liczba prawy ukośnik 2 dwukropek. Linia 7. if liczba procent dzielnik znak równości znak równości 0 dwukropek. Linia 8. suma plus znak równości dzielnik. Linia 9. dzielnik plus znak równości 1. Linia 11. return suma. Linia 13. kratka Sprawdzanie przecinek czy dana liczba jest liczba doskonala. Linia 14. def czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 15. if liczba znak równości znak równości suma podkreślnik dzielnikow otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 16. return True. Linia 17. return False. Linia 19. kratka Kod wyszukujący liczby doskonale. Linia 20. n znak równości 10000. Linia 22. doskonale znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 23. for liczba in range otwórz nawias okrągły 1 przecinek n zamknij nawias okrągły dwukropek. Linia 24. if czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 25. doskonale kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 27. kratka Wyswietlanie wynikow. Linia 28. print otwórz nawias okrągły apostrof Liczby doskonałe dwukropek apostrof przecinek doskonale zamknij nawias okrągły.

Wynik wywołania kodu będzie następujący:

Linia 1. Liczby doskonałe dwukropek otwórz nawias kwadratowy 6 przecinek 28 przecinek 496 przecinek 8128 zamknij nawias kwadratowy.
Ciekawostka

Oprócz liczb, które znaleźliśmy, kolejnymi liczbami doskonałymi są liczby: 33   550   336, 8   589   869   056, 137   438   691   328.

Wszystkie znane dotychczas liczby doskonałe są parzyste. Nie udało się jednak do tej pory udowodnić, że liczby doskonałe nieparzyste nie istnieją.

11
Dla zainteresowanych

Zaczynamy od kodu z Przykładu 2.

Możemy sprawdzić, ile czasu zabiera naszemu komputerowi policzenie kolejnych liczb i zwizualizować te czasy za pomocą modułu matplotlibmatplotlibmatplotlib.

W tym celu, na samej górze pliku, importujemy odpowiednią bibliotekę do tworzenia wykresów (matplotlib.pyplot) i ustawiamy jej alias plt. Potrzebna nam będzie również funkcja perf_counter() z biblioteki time, która umożliwi dokładny pomiar czasu.

Linia 1. import matplotlib kropka pyplot as plt. Linia 2. from time import perf podkreślnik counter.

Na początku przygotowujemy dwie tablice: X, która będzie przechowywała wartości na osi OX oraz czasy, która będzie przechowywała czas, jaki upłynął od rozpoczęcia wykonywania obliczeń, do ukończenia sprawdzania każdej liczby, czy jest ona liczbą doskonałą.

Linia 1. X znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 2. czasy znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy.

Rozpoczynamy pomiar, zapisując w zmiennej czas_startu czas rozpoczęcia wykonywania obliczeń. Ponieważ zależy nam na dokładności obliczeń, używamy do tego funkcji perf_counter() z biblioteki time.

Linia 1. X znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 2. czasy znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. czas podkreślnik startu znak równości perf podkreślnik counter otwórz nawias okrągły zamknij nawias okrągły.

Następnie modyfikujemy pętlę, która odpowiadała za sprawdzanie kolejnych liczb, czy są liczbami doskonałym. Po sprawdzeniu każdej liczby dodajemy do utworzonych tablic wartości: do tablicy X dodajemy liczbę, którą sprawdziliśmy, a do tablicy czasy - czas, jaki upłynął od rozpoczęcia obliczeń.

Linia 1. X znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 2. czasy znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. czas podkreślnik startu znak równości perf podkreślnik counter otwórz nawias okrągły zamknij nawias okrągły. Linia 5. for liczba in range otwórz nawias okrągły 1 przecinek n zamknij nawias okrągły dwukropek. Linia 6. if czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 7. doskonale kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 9. ile znak równości perf podkreślnik counter otwórz nawias okrągły zamknij nawias okrągły minus czas podkreślnik startu. Linia 10. X kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 11. czasy kropka append otwórz nawias okrągły ile zamknij nawias okrągły.

Ostatnim krokiem będzie wyświetlenie wykresu. W kolejnych krokach używamy funkcji:

  • plt.plot() - rzutujemy na wykres kolejne punkty o współrzędnych z tablic X oraz czasy,

  • plt.xlabel() - ustawiamy opis osi X,

  • plt.ylabel() - ustawiamy opis osi Y,

  • plt.grid() - włączamy wyświetlanie siatki na wykresie,

  • plt.show() - wyświetlamy wykres.

Linia 1. plt kropka plot otwórz nawias okrągły X przecinek czasy zamknij nawias okrągły. Linia 2. plt kropka xlabel otwórz nawias okrągły apostrof Kolejne obliczane liczby apostrof zamknij nawias okrągły. Linia 3. plt kropka ylabel otwórz nawias okrągły apostrof Czas w sekundach od czasu 0 apostrof zamknij nawias okrągły. Linia 4. plt kropka grid otwórz nawias okrągły True zamknij nawias okrągły. Linia 5. plt kropka show otwórz nawias okrągły zamknij nawias okrągły.

Oto kod całego programu:

Linia 1. import matplotlib kropka pyplot as plt. Linia 2. from time import perf podkreślnik counter. Linia 4. kratka Obliczanie sumy dzielnikow wlasciwych. Linia 5. def suma podkreślnik dzielnikow otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 6. suma znak równości 0. Linia 7. dzielnik znak równości 1. Linia 9. while dzielnik otwórz nawias ostrokątny znak równości liczba prawy ukośnik 2 dwukropek. Linia 10. if liczba procent dzielnik znak równości znak równości 0 dwukropek. Linia 11. suma plus znak równości dzielnik. Linia 12. dzielnik plus znak równości 1. Linia 14. return suma. Linia 16. kratka Sprawdzanie przecinek czy dana liczba jest liczba doskonala. Linia 17. def czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 18. if liczba znak równości znak równości suma podkreślnik dzielnikow otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 19. return True. Linia 20. return False. Linia 22. n znak równości 45000. Linia 23. doskonale znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 25. X znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 26. czasy znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 27. czas podkreślnik startu znak równości perf podkreślnik counter otwórz nawias okrągły zamknij nawias okrągły. Linia 29. for liczba in range otwórz nawias okrągły 1 przecinek n zamknij nawias okrągły dwukropek. Linia 30. if czy podkreślnik doskonala otwórz nawias okrągły liczba zamknij nawias okrągły dwukropek. Linia 31. doskonale kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 33. ile znak równości perf podkreślnik counter otwórz nawias okrągły zamknij nawias okrągły minus czas podkreślnik startu. Linia 34. X kropka append otwórz nawias okrągły liczba zamknij nawias okrągły. Linia 35. czasy kropka append otwórz nawias okrągły ile zamknij nawias okrągły. Linia 38. kratka Wyswietlanie wykresu. Linia 39. plt kropka plot otwórz nawias okrągły X przecinek czasy zamknij nawias okrągły. Linia 40. plt kropka xlabel otwórz nawias okrągły apostrof Kolejne obliczane liczby apostrof zamknij nawias okrągły. Linia 41. plt kropka ylabel otwórz nawias okrągły apostrof Czas w sekundach od czasu 0 apostrof zamknij nawias okrągły. Linia 42. plt kropka grid otwórz nawias okrągły True zamknij nawias okrągły. Linia 43. plt kropka show otwórz nawias okrągły zamknij nawias okrągły.
RmIwpmv6tnaqk

Możemy zauważyć, jak długo trwa wyszukiwanie ostatniej liczby.

Słownik

dzielnik właściwy
dzielnik właściwy

każdy dzielnik danej liczby, który jest od niej mniejszy

matplotlib
matplotlib

biblioteka służąca do przedstawienia obrazów złożonych z punktów o współrzędnych x oraz y (wykresów, histogramów, rozkładów itp.); moduł matplotlib nie jest dostępny w standardowej instalacji języka Python -należy go zainstalować, korzystając z mechanizmu pip