Inspirado por esta pregunta en Mathematics .
El problema
Dejar
n
ser un número natural≥ 2
. Tome el divisor más grande den
, que es diferente den
sí mismo, y restarlon
. Repita hasta que llegue1
.
La pregunta
¿Cuántos pasos se necesitan para alcanzar 1
un número dado n ≥ 2
?
Ejemplo detallado
Dejar
n = 30
.
El mayor divisor 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
Se necesitan 6 pasos para llegar 1
.
Entrada
- La entrada es un número entero
n
, donden ≥ 2
. - Su programa debe admitir la entrada hasta el valor entero máximo del idioma.
Salida
- Simplemente envíe el número de pasos, como
6
. - Los espacios en blanco iniciales o finales o las nuevas líneas están bien.
Ejemplos
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
Requisitos
- Puede obtener información de
STDIN
, argumentos de línea de comando, como parámetros de función o del equivalente más cercano. - Puedes escribir un programa o una función. Si es una función anónima, incluya un ejemplo de cómo invocarla.
- Este es el código de golf, por lo que la respuesta más corta en bytes gana.
- Las lagunas estándar no están permitidas.
Esta serie también se puede encontrar en OEIS: A064097
Un cuasi-logaritmo definido inductivamente por
a(1) = 0
ya(p) = 1 + a(p-1)
sip
es primo ya(n*m) = a(n) + a(m)
sim,n > 1
.
2^32 - 1
. El resto depende de usted y su sistema. Espero, esto es lo que quisiste decir con tu pregunta.