La "formica primaria" è un animale ostinato che naviga gli interi e li divide fino a quando rimangono solo i numeri primi!
Inizialmente, abbiamo un array infinito A contenente tutti gli interi> = 2: [2,3,4,5,6,.. ]
Lascia che psia la posizione della formica sull'array. Inizialmente, p = 0(l'array è indicizzato 0)
Ad ogni turno, la formica si sposterà come segue:
- se
A[p]è primo, la formica si sposta nella posizione successiva:p ← p+1 - altrimenti, se
A[p]è un numero composto,qsia il suo divisore più piccolo> 1. DividiamoA[p]perqe aggiungiamoqaA[p-1]. La formica si sposta nella posizione precedente:p ← p-1
Ecco le prime mosse per la formica:
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 ...
^
Il tuo programma dovrebbe produrre la posizione della formica dopo le nmosse. (puoi presumere n <= 10000)
Casi test:
0 => 0
10 => 6
47 => 9
4734 => 274
10000 => 512
Modificare. puoi anche utilizzare elenchi con 1 indice, è accettabile visualizzare i risultati 1, 7, 10, 275, 513 per il caso di test sopra riportato.
Questo è code-golf, quindi vince il codice con il codice più breve in byte.
n(o se il caso composito potrebbe mai spingere la formica a sinistra dell'iniziale 2).
1,7,10,275,513se indicato 1-indexing? O avrebbero ancora bisogno di abbinare le tue uscite.
