«Главный муравей» - упрямое животное, которое перемещается по целым числам и делит их, пока не останутся только простые числа!
Изначально у нас есть бесконечный массив A, содержащий все целые числа> = 2: [2,3,4,5,6,.. ]
Позвольте p
быть положение муравья в массиве. Изначально p = 0
(массив 0-индексирован)
Каждый ход муравей будет двигаться следующим образом:
- если
A[p]
простое число, муравей перемещается в следующую позицию:p ← p+1
- иначе, если
A[p]
это составное число, пустьq
его меньший делитель> 1. ДелимA[p]
наq
и добавляемq
вA[p-1]
. Муравей перемещается на предыдущую позицию:p ← p-1
Вот первые шаги для муравья:
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 ...
^
Ваша программа должна выводить позицию муравья после n
ходов. (можно предположить n <= 10000
)
Тестовые случаи:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Редактировать. Вы также можете использовать списки с 1 индексом, допустимо отображать результаты 1, 7, 10, 275, 513 для приведенного выше теста.
Это код-гольф, поэтому выигрывает код с самым коротким кодом в байтах.
n
(или может ли сложный случай когда-либо сдвинуть муравья слева от инициала 2
).
1,7,10,275,513
если 1-индексирование указано? Или они все равно должны соответствовать вашим результатам.