„Mrówka główna” jest upartym zwierzęciem, które porusza się po liczbach całkowitych i dzieli je, aż zostaną tylko liczby pierwsze!
Początkowo mamy nieskończoną tablicę A zawierającą wszystkie liczby całkowite> = 2: [2,3,4,5,6,.. ]
Niech p
będzie pozycją mrówki na tablicy. Początkowo p = 0
(tablica jest indeksowana 0)
W każdej turze mrówka porusza się w następujący sposób:
- jeśli
A[p]
jest liczbą pierwszą, mrówka przechodzi do następnej pozycji:p ← p+1
- w przeciwnym razie, jeśli
A[p]
jest liczbą złożoną, niechq
będzie jej mniejszym dzielnikiem> 1. DzielimyA[p]
przezq
i dodajemyq
doA[p-1]
. Mrówka przesuwa się do poprzedniej pozycji:p ← p-1
Oto pierwsze ruchy mrówki:
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 ...
^
Twój program powinien wyświetlać pozycję mrówki po n
ruchach. (możesz założyć n <= 10000
)
Przypadki testowe:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Edytować. możesz również użyć 1-indeksowanych list, dopuszczalne jest wyświetlanie wyników 1, 7, 10, 275, 513 dla powyższego przypadku testowego.
To jest code-golf, więc wygrywa kod z najkrótszym kodem w bajtach.
n
(czy też przypadek złożony mógłby kiedykolwiek przesunąć mrówkę na lewo od inicjału 2
).
1,7,10,275,513
jeśli podano indeksowanie 1? Czy nadal będą musieli dopasować twoje wyniki.