La "fourmi" est un animal obstiné qui navigue dans les entiers et les divise jusqu'à ce qu'il ne reste plus que des nombres premiers!
Au départ, nous avons un tableau infini A contenant tous les entiers> = 2: [2,3,4,5,6,.. ]
Soit p
la position de la fourmi sur le tableau. Initialement, p = 0
(tableau est indexé par 0)
À chaque tour, la fourmi se déplace comme suit:
- si
A[p]
est premier, la fourmi passe à la position suivante:p ← p+1
- sinon, si
A[p]
est un nombre composé,q
soit son plus petit diviseur> 1. Nous divisonsA[p]
parq
, et nous ajoutonsq
àA[p-1]
. La fourmi se déplace à la position précédente:p ← p-1
Voici les premiers mouvements de la fourmi:
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 ...
^
Votre programme doit afficher la position de la fourmi après les n
déplacements. (vous pouvez supposer n <= 10000
)
Cas de test:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Modifier. vous pouvez également utiliser des listes à 1 index, il est acceptable d'afficher les résultats 1, 7, 10, 275, 513 pour le scénario de test ci-dessus.
C'est du code-golf, donc le code avec le code le plus court en octets gagne.
n
(ou si le cas composite pourrait jamais pousser la fourmi à gauche de l'initiale 2
).
1,7,10,275,513
si 1-indexation déclarée? Ou auraient-ils encore besoin de correspondre à vos sorties.