Dado inteiro positivo n > 2. Nós o convertemos em uma matriz da seguinte maneira:
- Se for igual para
2retornar uma matriz vazia - Caso contrário, crie uma matriz de todos
nos 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 46em matriz. Em primeiro lugar, converta-o na matriz de seus principais fatores:
[2, 23]
Number 23é o 9primeiro primo, então substitua 2por array vazio e 23por [9]. A matriz agora se torna:
[[], [9]]
Os fatores primos de 9são 3e 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 1cada colchete e 0, em seguida, removemos todos os zeros finais e soltamos um 1do 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 10111001ser 185decimal. 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 nmaior 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
2pois os envios não são necessários para lidar com isso.