A "formiga principal" é um animal obstinado que navega pelos números inteiros e os divide até restarem apenas números primos!
Inicialmente, temos uma matriz infinita A contendo todos os números inteiros> = 2: [2,3,4,5,6,.. ]
Let p
Ser a posição da formiga na matriz. Inicialmente, p = 0
(a matriz é indexada em 0)
A cada turno, a formiga se moverá da seguinte maneira:
- se
A[p]
for primo, a formiga passa para a próxima posição:p ← p+1
- caso contrário, se
A[p]
for um número composto,q
seja seu divisor menor> 1. DividimosA[p]
porq
e adicionamosq
aA[p-1]
. A formiga se move para a posição anterior:p ← p-1
Aqui estão os primeiros movimentos da formiga:
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 ...
^
Seu programa deve exibir a posição da formiga após os n
movimentos. (você pode assumir n <= 10000
)
Casos de teste:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Editar. você também pode usar listas indexadas em 1; é aceitável exibir os resultados 1, 7, 10, 275, 513 para o caso de teste acima.
Isso é código-golfe, então o código com o código mais curto em bytes vence.
n
(ou se o caso composto poderia empurrar a formiga para a esquerda da inicial 2
).
1,7,10,275,513
se a indexação 1 for declarada? Ou eles ainda precisam corresponder às suas saídas.