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 ncome input e produrre il risultato dell'algoritmo di seguito ( 3o 19).
Per un dato numero intero n >= 2:
- Lascia che
fsia la posizione della rana. Inizialmente è impostato sun - if
f = 3orf = 19: la rana smette di saltare - interrompe il programma e l'uscitaf. - if
fis prime: la rana salta in posizione2×f-1. Torna al passaggio 2. - if
fè composito:dsiafil 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).
3o 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.
