Autor artykułu używa koła o skończonym rozmiarze, aby pominąć sprawdzanie wielokrotności pierwszych N liczb pierwszych na konstrukcji sita. Na przykład, w celu uniknięcia kontroli wielokrotności 2, 3
, można rozpocząć w 5
i przemian dodać 2 i 4. Jest to poniżej wheel 2
:Czy możliwe jest leniwe generowanie koła?
-- wheel 0 = ([2],[1])
-- wheel 1 = ([3,2],[2])
-- wheel 2 = ([5,3,2],[2,4]) -- "start at 5, add 2, 4, 2, 4..."
-- wheel 3 = ([7,5,3,2],[4,2,4,2,4,6,2,6])
Jej koło jest całkowicie generowane na starcie procesu przesiewania . To stanowi kompromis, ponieważ większe koła wymagają więcej pamięci. Uważam jednak, że mechanizm leżący u podstaw tego koła jest interesujący sam w sobie. Biorąc pod uwagę jego wyraźnie powtarzalny charakter, zastanawiam się, czy byłoby możliwe stworzenie "nieskończonego koła", które, podobnie jak sito, prezentowało się jako strumień? Ten strumień byłby, jak sądzę, granicą sekwencji list [1], [2], [2, 4], [4, 2, 4, 2, 4, 6, 2, 6]...
- i prawdopodobnie działa jako implementacja samego siebie.
Myślę, że "koło nieskończone" jest zasadniczo samym procesem przesiewania. – ErikR
Z artykułu: "* Zostawię eksperymenty z większymi kołami i pisaniem kodu, aby wygenerować te koła jako ćwiczenie rekreacyjne dla czytelnika." - dobrze zrobione :-) – Bergi
@ErikR jesteś pewien? Wygląda jak inna seria [1, 2, 2, 4, 2, 4, 2, 4, 6, 2, 6, 4, 2, 4, 6] (https://oeis.org/A001223), więc może mieć różne charakterystyki wytwarzania. – MaiaVictor