Die "Primameise" ist ein hartnäckiges Tier, das durch die ganzen Zahlen navigiert und sie teilt, bis nur noch Primzahlen übrig sind!
Anfangs haben wir ein unendliches Array A, das alle ganzen Zahlen> = 2 enthält: [2,3,4,5,6,.. ]
Sei p
die Position der Ameise auf dem Array. Anfangs p = 0
(Array ist 0-indiziert)
In jeder Runde bewegt sich die Ameise wie folgt:
- Wenn
A[p]
es Prim ist, bewegt sich die Ameise zur nächsten Position:p ← p+1
- andernfalls, wenn
A[p]
es sich um eine zusammengesetzte Zahl handelt, seiq
ihr kleinerer Teiler> 1. Wir teilenA[p]
durchq
und addierenq
zuA[p-1]
. Die Ameise bewegt sich zur vorherigen Position:p ← p-1
Hier sind die ersten Züge für die Ameise:
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 ...
^
Ihr Programm sollte nach n
Zügen die Position der Ameise ausgeben . (Sie können davon ausgehen n <= 10000
)
Testfälle:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Bearbeiten. Sie können auch 1-indizierte Listen verwenden. Es ist akzeptabel, die Ergebnisse 1, 7, 10, 275, 513 für den obigen Testfall anzuzeigen.
Das ist Code-Golf, also gewinnt der Code mit dem kürzesten Code in Bytes.
n
(oder ob der zusammengesetzte Fall die Ameise jemals nach links von der Initiale schieben könnte 2
).
1,7,10,275,513
Wird 1-Indizierung angegeben? Oder müssten sie noch mit Ihren Ausgaben übereinstimmen.