Zainspirowany tym pytaniem z Matematyki .
Problem
Niech
n
będzie liczbą naturalną≥ 2
. Weź największy dzielnikn
- który różni się odn
siebie - i odejmij gon
. Powtarzaj, aż dostaniesz1
.
Pytanie
Ile kroków trzeba osiągnąć, 1
aby uzyskać określoną liczbę n ≥ 2
.
Szczegółowy przykład
Let
n = 30
.
Największy dzielnik:
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
To trwa 6 kroków do osiągnięcia 1
.
Wejście
- Dane wejściowe to liczba całkowita
n
, gdzien ≥ 2
. - Twój program powinien obsługiwać wprowadzanie danych do maksymalnej wartości całkowitej języka.
Wynik
- Po prostu wypisz liczbę kroków, takich jak
6
. - Wiodące / końcowe białe znaki lub znaki nowej linii są w porządku.
Przykłady
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
Wymagania
- Możesz uzyskać dane wejściowe z
STDIN
argumentów wiersza poleceń jako parametry funkcji lub z najbliższego odpowiednika. - Możesz napisać program lub funkcję. Jeśli jest to funkcja anonimowa, podaj przykład jej wywołania.
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
- Standardowe luki są niedozwolone.
Tę serię można również znaleźć w OEIS: A064097
Quasi-logarytm zdefiniowany indukcyjnie przez
a(1) = 0
ia(p) = 1 + a(p-1)
jeślip
jest liczbą pierwszą ia(n*m) = a(n) + a(m)
jeślim,n > 1
.
2^32 - 1
. Reszta zależy od Ciebie i Twojego systemu. Mam nadzieję, że o to ci chodziło z pytaniem.