La "rana primaria" è uno strano animale che salta tra numeri interi, fino a quando non arriva il 3 o il 19 ...
Il tuo programma dovrebbe accettare un numero intero n
come input e produrre il risultato dell'algoritmo di seguito ( 3
o 19
).
Per un dato numero intero n >= 2
:
- Lascia che
f
sia la posizione della rana. Inizialmente è impostato sun
- if
f = 3
orf = 19
: la rana smette di saltare - interrompe il programma e l'uscitaf
. - if
f
is prime: la rana salta in posizione2×f-1
. Torna al passaggio 2. - if
f
è composito:d
siaf
il principale divisore principale. La rana salta in posizionef-d
. Torna al passaggio 2.
Esempi:
Un esempio con n = 5
:
5 > 9 > 6 > 3 stop
Il programma dovrebbe essere emesso 3
.
Un altro esempio con n = 23
:
23 > 45 > 40 > 35 > 28 > 21 > 14 > 7 > 13 > 25 > 20 > 15 > 10 > 5 > 9 > 6 > 3 stop
Ancora una volta, il programma dovrebbe essere prodotto 3
.
Casi test:
10 => 3
74 => 19
94 => 3
417 => 3
991 => 19
9983 => 19
Puoi presumere 1 < n < 1000000
(ho verificato che il programma termina per questi valori).
3
o 19
, potremmo cambiare il punto 2. dell'algoritmo per dire che se la rana è entrata in un ciclo (ha incontrato una posizione che ha visto prima), allora cessa il salto e restituisce il più piccolo membro di quel ciclo.