"Asal karınca", tam sayılar arasında dolaşan ve yalnızca bir tane kalan primerler olana kadar onları bölen obstinat bir hayvandır!
Başlangıçta,>> 2 tam sayılarını içeren sonsuz bir A dizisine sahibiz: [2,3,4,5,6,.. ]
p
Dizideki karınca pozisyonu olsun . Başlangıçta, p = 0
(dizi 0 dizinli)
Her turda, karınca aşağıdaki gibi hareket eder:
- eğer
A[p]
asal sonraki pozisyona karınca hamle:p ← p+1
- eğer başka,
A[p]
kompozit sayıdır, letq
Biz bölmek daha küçük bölen> 1. olmakA[p]
tarafındanq
ve biz eklemekq
içinA[p-1]
. Karınca önceki pozisyonuna hareket eder:p ← p-1
İşte karınca için ilk hamle:
2 3 4 5 6 7 8 9 ...
^
2 3 4 5 6 7 8 9 ...
^
2 3 4 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 5 6 7 8 9 ...
^
2 5 2 7 3 7 8 9 ...
^
Programınız n
hamlelerin ardından karınca pozisyonunu vermeli (varsayabilirsin n <= 10000
)
Test durumları:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Düzenle. 1 indeksli listeleri de kullanabilirsiniz, yukarıdaki test durumu için 1, 7, 10, 275, 513 sonuçlarının gösterilmesi kabul edilebilir.
Bu kod-golf, yani bayt cinsinden en kısa kod olan kod kazanır.
n
(veya kompozit durumun karıncaları başlangıçtaki sola itebilir mi 2
).
1,7,10,275,513
1-indexing belirtilmişse? Yoksa yine de çıktılarına uymaları gerekecek.