¡La "hormiga principal" es un animal obstinado que navega por los enteros y los divide hasta que solo quedan números primos!
Inicialmente, tenemos una matriz infinita A que contiene todos los enteros> = 2: [2,3,4,5,6,.. ]
Deje p
ser la posición de la hormiga en la matriz. Inicialmente p = 0
(la matriz está indexada en 0)
Cada turno, la hormiga se moverá de la siguiente manera:
- si
A[p]
es primo, la hormiga se mueve a la siguiente posición:p ← p+1
- de lo contrario, si
A[p]
es un número compuesto,q
sea su divisor más pequeño> 1. DividimosA[p]
entreq
y sumamosq
aA[p-1]
. La hormiga se mueve a la posición anterior:p ← p-1
Aquí están los primeros movimientos para la hormiga:
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 ...
^
Su programa debería mostrar la posición de la hormiga después de los n
movimientos. (puedes asumir n <= 10000
)
Casos de prueba:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Editar. también puede usar listas indexadas 1, es aceptable mostrar los resultados 1, 7, 10, 275, 513 para el caso de prueba anterior.
Este es el código de golf, por lo que gana el código con el código más corto en bytes.
n
(o si el caso compuesto podría empujar la hormiga a la izquierda de la inicial 2
).
1,7,10,275,513
si se indica 1 indexación? O aún tendrían que coincidir con sus resultados.