Dado inteiro positivo n > 2
. Nós o convertemos em uma matriz da seguinte maneira:
- Se for igual para
2
retornar uma matriz vazia - Caso contrário, crie uma matriz de todos
n
os fatores primos classificados de forma crescente, então cada elemento substitua por seu índice na sequência de números primos e, finalmente, converta cada elemento em matriz
Por exemplo, vamos converter o número 46
em matriz. Em primeiro lugar, converta-o na matriz de seus principais fatores:
[2, 23]
Number 23
é o 9
primeiro primo, então substitua 2
por array vazio e 23
por [9]
. A matriz agora se torna:
[[], [9]]
Os fatores primos de 9
são 3
e 3
, portanto:
[[], [3, 3]]
Faça o mesmo para ambos 3
:
[[], [[2], [2]]]
E finalmente:
[[], [[[]], [[]]]]
Agora, para codificá-lo, simplesmente substituímos cada colchete aberto por 1
cada colchete e 0
, em seguida, removemos todos os zeros finais e soltamos um 1
do final. Este é o nosso número binário. Usando o exemplo acima:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
Agora basta soltar os três últimos zeros e o último 1
. O número passa a 10111001
ser 185
decimal. Essa é a saída esperada. Observe que, na matriz, os colchetes de conversão binária da matriz principal não estão incluídos.
Entrada
Número inteiro positivo n
maior que 2
.
Saída
Inteiro codificado n
.
Regras e formato IO
- Aplicam-se regras padrão.
- A entrada pode ser string ou número (mas no caso de string, ela deve estar na base 10).
- A saída pode ser sequência ou número (mas, no caso de sequência, deve estar na base 10).
- Isso é código-golfe , a resposta mais curta em bytes vence!
Casos de teste
Mais casos de teste, mediante solicitação.
3 ---> 1
4 ---> 2
5 ---> 3
6 ---> 5
7 ---> 6
8 ---> 10
9 ---> 25
10 ---> 11
10000 ---> 179189987
10001 ---> 944359
10002 ---> 183722
10003 ---> 216499
10004 ---> 2863321
10005 ---> 27030299
10006 ---> 93754
10007 ---> 223005
10008 ---> 1402478
2
pois os envios não são necessários para lidar com isso.