Merhaba,
Yaklaşık 1 senedir, hobi maksatlı bir proje için kod yazıyorum. Ama bazen kendimden şüphe ediyorum...:)
Çünkü görebildiklerimi başka insanlar neden göremiyor, anlamıyorum! Elbette bakış açısından dolayı olmalı. Hatta konuyla alakalı olarak geçen gün Zekeriya'nın gördüğü şeyi ben de görememişim. Ancak, algoritma ile kanıtladığım için artık pek de şüphe etmiyorum. Peki ya siz aşağıda bir desen (tekrar eden, algoritması kolayca yazılabilen bir aritmetik) görebiliyor musunuz?
Alıntı ("bwstest.d çıktısı"):
>-ADG-BEH-CF
-D-AF-CH-E-BG
-G-F-E-D-C-B-AH
-B-C-D-E-F-G-H--A
-E-H--C-F--A-D-G--B
-H--E--B-G--D--A-F--C
--C--B--A-H--G--F--E--D
--F--G--H---A--B--C--D--E
---A--D--G---B--E--H---C--F
---D---A--F---C--H---E---B--G
---G---F---E---D---C---B---A--H
---B---C---D---E---F---G---H----A
---E---H----C---F----A---D---G----B
---H----E----B---G----D----A---F----C
----C----B----A---H----G----F----E----D
----F----G----H-----A----B----C----D----E
-----A----D----G-----B----E----H-----C----F
-----D-----A----F-----C----H-----E-----B----G
-----G-----F-----E-----D-----C-----B-----A----H
-----B-----C-----D-----E-----F-----G-----H------A
-----E-----H------C-----F------A-----D-----G------B
-----H------E------B-----G------D------A-----F------C
------C------B------A-----H------G------F------E------D
------F------G------H-------A------B------C------D------E
-------A------D------G-------B------E------H-------C------F
-------D-------A------F-------C------H-------E-------B------G
-------G-------F-------E-------D-------C-------B-------A------H
-------B-------C-------D-------E-------F-------G-------H--------A
-------E-------H--------C-------F--------A-------D-------G--------B
-------H--------E--------B-------G--------D--------A-------F--------C
--------C--------B--------A-------H--------G--------F--------E--------D
--------F--------G--------H---------A--------B--------C--------D--------E
Sanırım bu forumda işaretlerini ilk olarak şu başlıkta vermiştim: Eratosten Kalburu Algoritması (3.ileti) (http://ddili.org/forum/post/6962)
Şekiller çizmiştim ve öncesinde bir Google Projesi (https://code.google.com/p/bitwise-sieve/) açmış, e-posta yoluyla arkadaşlarımla gidebildiği yere kadar tartışmıştım. Aslında temeli basit, çünkü milattan önce 3. yüzyılda yaşamış Eratosten'nin kalburunu (-bknz. Sieve of Eratosthenes (http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)) kullanıyorum. Ancak bilen bilir, önceki tüm asal kökleri kullanarak çıkarılan (katları elenen) bu yönteme ihtiyaç duymuyorum. Temelini ikilik sistemde kaydırma komutları (o yüzden Bitwise Sieve ismini verdim) oluşturuyor ve sonra modüler aritmetik kullanarak ileriki bir asal sayıyı çıkarabiliyorum. Gerçi şu var:
Belki Erastosten'nin geleneğini sürdürüyor olabilirim. Gerçekten de, asal olmayanları binary 1 sayısı ile işaretleyerek eliyorum. Ancak çift sayılarda işlem yapmıyor, 8 bitlik ubyte değişkenine verdiğim değerlerle (0-255) 16 tam sayı veya 8 tek sayı ifade edebiliyorum. Örneğin:
Alıntı:
>'3 - 5 - 7 - 9 - 11 - 13 - 15 - 17
0 - 0 - 0 - 1 - 0 - 0 - 1 - 0 (DEC.72)
'
Mutlaka dikkatinizi çekmiştir, neden DEC.18 değil de 72 sayısı. Çünkü verileri bir yığında (stack array) tutuyorum ve BIN'deki ilk bit (LSB tarafı) aslında 3'ü temsil ediyor. Peki, her bitin değer 1, 2, 4, 8... diye gittiğine göre; dördüncü bit 1 (DEC.8) asal olmayan sayıyı perdelesin. Tıpkı Eratosten'nin yaptığı gibi çizgi üzerine bir çizik atıyoruz. Sanırım henüz çok kafa karıştırmadım ve herkese basit gelmiş olmalı, değil mi?
Şimdilik bu kadar...
Dip Not: Zamanla, gelen sorular veya gelişmeler doğrultusunda bu tartışmayı devam ettireceğim inşaallah. Başlangıçta kod vermedim ama yukarıda naklettiğim 3. ileti ve devamına bakarak bazı kodlara erişebilirsiniz. Amacım olabildiğince basitten konuyu işleyerek herkesin anlamasını sağlamak.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]