Dato intero positivo n > 2
. Lo convertiamo in un array come segue:
- Se è uguale a
2
restituire un array vuoto - Altrimenti crea una matrice di tutti
n
i fattori primi ordinati in ordine crescente, quindi ogni elemento sostituisce con il suo indice in sequenza numeri primi e infine converte ogni elemento in matrice
Ad esempio, consente di convertire il numero 46
in array. In primo luogo, convertilo in matrice dei suoi fattori primi:
[2, 23]
Il numero 23
è 9
il primo, quindi sostituiscilo 2
con un array vuoto e 23
con [9]
. La matrice ora diventa:
[[], [9]]
I fattori primi di 9
sono 3
e 3
, quindi:
[[], [3, 3]]
Fai lo stesso per entrambi 3
:
[[], [[2], [2]]]
E infine:
[[], [[[]], [[]]]]
Ora, per codificarlo, sostituiamo semplicemente ogni parentesi aperta con 1
e ogni parentesi chiusa con 0
, quindi rimuoviamo tutti gli zeri finali e ne rilasciamo uno 1
dalla fine. Questo è il nostro numero binario. Utilizzando l'esempio sopra:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
Ora trascina semplicemente gli ultimi tre zeri e l'ultimo 1
. Il numero diventa 10111001
che è 185
in decimale. Questo è l'output previsto. Si noti che tra parentesi di conversione da array a binari dell'array principale non sono inclusi.
Ingresso
Numero intero positivo n
maggiore di 2
.
Produzione
Numero intero codificato n
.
Regole e formato IO
- Si applicano le regole standard.
- L'input può essere stringa o numero (ma in caso di stringa deve essere nella base 10).
- L'output può essere stringa o numero (ma in caso di stringa deve essere nella base 10).
- Questo è code-golf , vince la risposta più breve in byte!
Casi test
Altri casi di test su richiesta.
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
poiché gli invii non sono necessari per gestirlo.