Circa un anno fa ti è stato chiesto di trovare i numeri primi di XOR . Questi sono numeri i cui unici fattori sono 1 e se stessi quando si esegue la moltiplicazione XOR nella base 2 . Ora avrebbero speziato un po 'le cose.
Troveremo i numeri primi XOR nella base -2
Conversione in base -2
La base -2 è molto simile a tutte le altre basi. Il posto più a sinistra è il posto 1s (1 = (-2) 0 ), accanto a quello è il posto -2s (-2 = (-2) 1 ), accanto a quello è il posto 4s (4 = (-2) ) 2 ), e così via e così via. La grande differenza è che i numeri negativi possono essere rappresentati nella base -2 senza alcun segno negativo.
Ecco alcuni esempi di conversioni:
Decimal | Base -2
-----------------
6 | 11010
-7 | 1001
12 | 11100
-15 | 110001
Aggiunta di XOR in Base -2
L'aggiunta di XOR in Base -2 è praticamente la stessa dell'aggiunta di XOR in binario. È sufficiente convertire il numero in Base -2 e XOR ogni cifra in atto. (È uguale all'aggiunta senza carry)
Ecco un esempio elaborato passo passo:
(Useremo il simbolo +'
per indicare l'aggiunta di Base -2 XOR)
Inizia dalla base 10:
6 +' -19
Converti in base -2:
11010 +' 10111
Aggiungili senza trasportare:
11010
+' 10111
---------
01101
Converti i risultati in base 10:
-3
Moltiplicazione XOR in Base -2
Ancora una volta la moltiplicazione XOR in base -2 è quasi uguale alla moltiplicazione XOR in binario. Se non si ha familiarità con XOR moltiplicazione in base 2 c'è una spiegazione eccellente qui vi consiglio di dare un'occhiata a quella prima.
La moltiplicazione XOR in Base -2 equivale a eseguire una moltiplicazione lunga in base -2 tranne quando si tratta dell'ultimo passaggio invece di sommare tutti i numeri con un tradizionale che +
si utilizza +'
sopra definito.
Ecco un esempio elaborato di seguito:
Inizia in decimale:
8 *' 7
Converti in base -2:
11000 *' 11011
Imposta divisione lunga:
11000
*' 11011
---------
Moltiplica il primo numero per ogni posizione nel secondo
11000
*' 11011
------------
11000
11000
0
11000
11000
Aggiungi tutti i risultati usando l'aggiunta XOR di base -2
11000
*' 11011
-------------
11000
11000
0
11000
+' 11000
-------------
101101000
Convertire il risultato in decimale:
280
La sfida
La tua sfida è verificare se un numero è o meno un numero primo XOR in base -2. Un numero è un numero primo XOR in base -2 se l'unica coppia di numeri interi che si moltiplica in esso in base è 1 e se stessa. (1 non è un numero primo)
Riceverai un numero e produrrai un valore booleano, in verità se l'input è un numero primo XOR in base -2 in caso contrario.
Le soluzioni verranno classificate in byte con l'obiettivo di raggiungere il numero più basso di byte.
Casi test
Di seguito sono riportati tutti i numeri primi XOR nella base -2:
-395
-3
-2
3
15
83
I seguenti non sono numeri primi XOR in base -2:
-500
-4
0
1
258
280
258
sembra uguale-2 *' -129 = 10 *' 10000011