Inspiré par cette question sur les mathématiques .
Le problème
Soit
n
un nombre naturel≥ 2
. Prenez le plus grand diviseur den
- qui est différent den
lui-même - et soustrayez-len
. Répétez jusqu'à ce que vous obtenez1
.
La question
Combien de pas faut-il pour atteindre 1
un nombre donné n ≥ 2
.
Exemple détaillé
Let
n = 30
.
Le plus grand diviseur de:
1. 30 is 15 --> 30 - 15 = 15
2. 15 is 5 --> 15 - 5 = 10
3. 10 is 5 --> 10 - 5 = 5
4. 5 is 1 --> 5 - 1 = 4
5. 4 is 2 --> 4 - 2 = 2
6. 2 is 1 --> 2 - 1 = 1
Il faut 6 étapes pour y arriver 1
.
Contribution
- L'entrée est un entier
n
, oùn ≥ 2
. - Votre programme doit prendre en charge la saisie jusqu’à la valeur entière maximale de la langue.
Sortie
- Indiquez simplement le nombre d'étapes, comme
6
. - Les espaces blancs ou les nouvelles lignes sont acceptables.
Exemples
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
Exigences
- Vous pouvez obtenir des entrées à partir d’
STDIN
arguments de ligne de commande, de paramètres de fonction ou de l’équivalent le plus proche. - Vous pouvez écrire un programme ou une fonction. S'il s'agit d'une fonction anonyme, veuillez inclure un exemple expliquant comment l'invoquer.
- C'est la réponse code-golf, donc la réponse la plus courte en octets est gagnante.
- Les failles standard sont interdites.
Cette série est également disponible sur OEIS: A064097
Un quasi-logarithme défini inductivement par
a(1) = 0
eta(p) = 1 + a(p-1)
sip
est premier eta(n*m) = a(n) + a(m)
sim,n > 1
.
2^32 - 1
. Le reste est à vous et à votre système. J'espère que c'est ce que vous vouliez dire par votre question.