Wpis z mikrobloga

Jestem początkujący jeśli chodzi o programowanie w pythonie. Napisałem program do szukania liczb pierwszych. Potem napisałem drugi, który wyznaczał "spiralę" w której każdy kolejny punkt był przesunięty o 1 (w górę/dół/prawo/lewo) od poprzedniego. Jeśli id punktu znajdowało się na liście liczb pierwszych wygenerowanych przez pierwszy program to taki punkt był zapisywany do osobnej listy i na podstawie tej listy wygenerowałem wykres.

Na obrazku efekt dla 2063 pierwszych liczb pierwszych (nie korzystałem z żadnej pomocy).

Zainteresowanych odsyłam do artykułu na wiki który mnie zainspirował do napisania mojego tworu - Spirala Ulama

#programista500+ #python #jestemzsiebiedumny #programowanie #atencyjnyniebieskipasek #matematyka
S.....X - Jestem początkujący jeśli chodzi o programowanie w pythonie. Napisałem prog...

źródło: comment_gFBvEDvlDlwJjPIMBq8Psc9bDj9AzcuT.jpg

Pobierz
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SebX: już myślałem, że będzie:

Napisałem program do szukania liczb pierwszych.

Gdzie składać CV? Chcę zarabiać 15k


A tak to gratulacje. Fajny wykres. Chyba przyjemnie się takie rzeczy robi
  • Odpowiedz
@mk321: Na studiach miałem trochę VBA więc nie musiałem się aż tak bardzo przyzwyczajać do składni. Ogólnie jest nie najgorzej.

Algorytmy napisałem dwa. Pierwszy (wolniejszy) opierał się na stworzeniu listy reszt z dzielenia przez kolejne dzielniki. Jeżeli w tej liście znajdowało się 0 to nie była zapisywana do listy, ponieważ miała inny dzielnik. W drugim usprawniłem to o tyle, że nie korzystam z listy do zapisu wyniku, bo "w locie"
  • Odpowiedz
Na obrazku efekt dla 2063 pierwszych liczb pierwszych


@SebX: a jeśli ustawisz większy zakres? Np. coś w okolicach 5000, 10000 albo w ogóle 10x lub 100x większe? Interesujące to jest z dwóch powodów:

1. Jak będzie wyglądał obrazek ( ͡° ͜ʖ ͡°) Na tym małym wygląda jakby była jakaś regularność. Np. widać linie w górę i w dół. Być może regularność się utrzyma i dzięki temu odkryjesz nowe twierdzenie matematyczne jak
  • Odpowiedz
@SebX: Ostatnio widziałem jakiś filmik na kanale Numberophile/Computerphile z identycznym zagadnieniem. Polecam oba te kanały. Odkryłem je jakiś czas temu i zainteresowałem się programowaniem. Jeśli szukasz inspiracji do napisania jeszcze czegoś to te kanały na pewno ci się przydadzą.
Mi spodobało się conway's game of life. Łatwe do napisania i efekt całkiem fajny jak to wszystko się rusza ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@mk321:
1. W Wiki o Spirali Ulama (link w pierwszym poście) jest co nieco o tym fenomenie. (dla 100000 kroków obrazek w załączniku)
2. Wyszukanie liczb pierwszych w przedziale do 100 000 zajmuje mojemu programowi około 1:44 minuty, mój program zamiast wykreślać jak w sicie iteruje przez kolejne punkty
2a. Skopiowałem algorytm sita Eratostenesa ze stackoverflow i wyszło 2:40 (pewnie jakby pogrzebać znalazłoby się coś szybszego)
2b Podobnie z Atkinem, ale tutaj już
S.....X - @mk321: 
1. W Wiki o Spirali Ulama (link w pierwszym poście) jest co nieco...

źródło: comment_Bx9DkBQZWr0dr6UENwaxuZ1MBTz4CuiG.jpg

Pobierz
  • Odpowiedz
@SebX: fajnie, że zrobiłeś testy, dzięki :)

Rzeczywiście w artykule na Wiki jest trochę wspomniane. Na końcu nawet jest link do aplikacji online, gdzie można sobie obejrzeć wynik dla 3,5 miliona (https://www.alpertron.com.ar/ULAM.HTM -> Zoom out) - tylko że to pewnie wcześniej wygenerowane tylko wczytywane.

1:44 to jest co optymalizować.
Troszkę zaskoczenie, że zwykłe sito Eratostenesa było wolniejsze. Chociaż pewnie w twoim przypadku własnoręcznie napisany kod był szybszy (bo tak to pewnie coś
  • Odpowiedz