Un intero gaussiano è un numero complesso le cui parti reali e immaginarie sono numeri interi.
Gli interi gaussiani, come gli interi ordinari, possono essere rappresentati come un prodotto di numeri primi gaussiani, in un modo unico. La sfida qui è calcolare i costituenti primi di un dato intero gaussiano.
Input: un intero gaussiano, che non è uguale a 0 e non è un'unità (cioè 1, -1, i e -i non possono essere dati come input). Utilizzare qualsiasi formato sensibile, ad esempio:
- 4-5i
- -5 * j + 4
- (4, -5)
Output: un elenco di numeri interi gaussiani, che sono primi (ovvero nessuno di essi può essere rappresentato come prodotto di due numeri interi gaussiani non unitari) e il cui prodotto è uguale al numero di input. Tutti i numeri nell'elenco di output devono essere non banali, ovvero non 1, -1, i o -i. È possibile utilizzare qualsiasi formato di output sensibile; non dovrebbe necessariamente essere lo stesso del formato di input.
Se l'elenco di output ha più di 1 elemento, sono possibili più output corretti. Ad esempio, per l'ingresso 9 l'uscita può essere [3, 3] o [-3, -3] o [3i, -3i] o [-3i, 3i].
Casi di test, (presi da questa tabella ; 2 righe per caso di test)
2
1+i, 1-i
3i
3i
256
1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i
7+9i
1+i,2−i,3+2i
27+15i
1+i,3,7−2i
6840+585i
-1-2i, 1+4i, 2+i, 3, 3, 6+i, 6+i
Le funzioni integrate per il factoring di numeri interi gaussiani non sono consentite. Tuttavia, è consentito il factoring di numeri interi ordinari mediante funzioni integrate.
3i
è la risposta corretta perché i
non è un numero primo. Ho aggiornato il test case per renderlo più chiaro.
6840+585i
ha un elenco errato di fattori, in quanto 5
non è un numero primo gaussiano. Invece, ritorna -1-2i, 1+4i, 2+i, 3, 3, 6+i, 6+i
. Fonte
256=(1+i)**16
non (1+i)**8
perché 256=2**8=(2i)**8
e2i=(1+i)**2
3i
tornare come3,i
, o3i
?