Inspirado por esta pergunta em Matemática .
O problema
Let
n
Ser um número natural≥ 2
. Pegue o maior divisor den
- que é diferente den
si mesmo - e subtraia-o den
. Repita até você chegar1
.
A questão
Quantas etapas são necessárias para alcançar 1
um determinado número n ≥ 2
.
Exemplo Detalhado
Let
n = 30
.
O maior 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
São necessários 6 passos para chegar 1
.
Entrada
- Entrada é um número inteiro
n
, onden ≥ 2
. - Seu programa deve oferecer suporte até o valor inteiro máximo do idioma.
Resultado
- Basta imprimir o número de etapas, como
6
. - Espaços em branco à esquerda / à direita ou novas linhas são bons.
Exemplos
f(5) --> 3
f(30) --> 6
f(31) --> 7
f(32) --> 5
f(100) --> 8
f(200) --> 9
f(2016^155) --> 2015
Exigências
- Você pode obter entrada de
STDIN
argumentos de linha de comando, como parâmetros de função ou do equivalente mais próximo. - Você pode escrever um programa ou uma função. Se for uma função anônima, inclua um exemplo de como invocá-la.
- Este é o código-golfe, pelo que a resposta mais curta em bytes vence.
- As brechas padrão não são permitidas.
Esta série também pode ser encontrada no OEIS: A064097
Um quase-logaritmo definido indutivamente por
a(1) = 0
ea(p) = 1 + a(p-1)
sep
é primo ea(n*m) = a(n) + a(m)
sem,n > 1
.
2^32 - 1
. O resto é com você e seu sistema. Espero que seja isso que você quis dizer com sua pergunta.