Inspiriert von dieser Frage bei Mathematics .
Das Problem
Sei
neine natürliche Zahl≥ 2. Nehmen Sie den größten Teiler vonn- der sich vonnselbst unterscheidet - und subtrahieren Sie ihn vonn. Wiederholen, bis Sie bekommen1.
Die Frage
Wie viele Schritte tut , es zu erreichen nehmen 1für eine bestimmte Anzahl n ≥ 2.
Ausführliches Beispiel
Lassen
n = 30.
Der größte Teiler von:
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
Es dauert 6 Schritte zu erreichen 1.
Eingang
- Eingabe ist eine ganze Zahl
n, wobein ≥ 2. - Ihr Programm sollte die Eingabe bis zum maximalen Ganzzahlwert der Sprache unterstützen.
Ausgabe
- Geben Sie einfach die Anzahl der Schritte wie
6. - Führende / nachfolgende Leerzeichen oder Zeilenumbrüche sind in Ordnung.
Beispiele
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
Bedarf
- Sie können Eingaben von
STDINBefehlszeilenargumenten als Funktionsparameter oder von der nächstgelegenen Entsprechung erhalten. - Sie können ein Programm oder eine Funktion schreiben. Wenn es sich um eine anonyme Funktion handelt, geben Sie bitte ein Beispiel für den Aufruf an.
- Dies ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.
- Standardlücken sind nicht zulässig.
Diese Serie gibt es auch bei OEIS: A064097
Ein durch
a(1) = 0unda(p) = 1 + a(p-1)if induktiv definierter Quasi-Logarithmuspist prim unda(n*m) = a(n) + a(m)ifm,n > 1.
2^32 - 1. Der Rest liegt bei Ihnen und Ihrem System. Hoffe, das hast du mit deiner Frage gemeint.




