TL; DR
Confronta la somma di ogni tripletta, il prodotto di ciascuna tripletta e la somma dei prodotti di tutte le possibili combinazioni di ciascuna tripletta.
The Nitty Gritty
Dal teorema fondamentale dell'algebra , per un polinomio di grado N, dobbiamo avere N radici.
Usando questo fatto lasciamo essere i nostri zeri a1, a2, and a3. Ora, troviamo i coefficienti di questo polinomio.
(x - a1) * (x - a2) * (x - a3)
(x^2 - (a1 + a2) * x + a1a2) * (x - a3)
x^3 - (a1 + a2) * x^2 + (a1a2) * x - a3 * x^2 + (a1a3 + a2a3) * x - a1a2a3
x^3 + (-1 * (a1 + a2 + a3)) * x^2 + (a1a2 + a1a3 + a2a3) * x + (-1 * a1a2a3)
Se due polinomi sono equivalenti, devono avere le stesse radici (di nuovo dall'ALS). Quindi tutto ciò che dobbiamo fare è confrontare i coefficienti dei polinomi generati.
Quindi se,
(-1 * (a1 + a2 + a3) == (-1 * (b1 + b2 + b3))
---equivalently---
a1 + a2 + a3 == b1 + b2 + b3
E
(a1a2 + a1a3 + a2a3) == (b1b2 + b1b3 + b2b3)
E
-1 * a1a2a3 == -1 * b1b2b3
---equivalently---
a1a2a3 == b1b2b3
Quindi possiamo concludere le terzine a1, a2, a3e b1, b2, b3sono equivalenti.
Ne vale la pena?
Da un punto di vista pratico, vediamo se questo è davvero più efficiente del controllo della forza bruta, come illustrato dall'OP.
Primo controllo: somma e confronto. Ciò richiede 4 aggiunte totali e 1 controllo per l'uguaglianza.
Verifica totale = 5; Totale parziale = 5
Secondo controllo: prodotto, somma e confronto. Ciò richiede 6 moltiplicazioni totali, 4 aggiunte totali e 1 controllo per l'uguaglianza.
Verifica totale = 11; Totale parziale = 16
Terzo controllo: prodotto e confronto. Ciò richiede 4 moltiplicazioni totali e 1 controllo per l'uguaglianza.
Verifica totale = 5; Totale parziale = 21
Aggiungendo le due operazioni logiche AND, il numero totale di operazioni binarie per i "coefficienti dell'approccio polinomiale generato" richiede solo:
23 operazioni binarie
Il controllo della forza bruta richiede 18 controlli di uguaglianza totale, 12 confronti logici AND e 5 confronti logici OR per un totale di:
35 operazioni binarie
Quindi, a rigor di termini , la risposta è sì, i "coefficienti dell'approccio polinomiale generato" sono effettivamente più efficienti. Tuttavia, come sottolinea @WJS, l'approccio della forza bruta ha molte più opportunità di cortocircuito e quindi esegue come / in modo più efficiente dell'approccio matematico.
Per completezza completa
Non possiamo saltare la verifica della somma dei prodotti di tutte le possibili combinazioni di ciascuna tripletta. Se lo omettiamo, ci sono innumerevoli esempi in cui questo fallisce. Considera (23, 32, 45)e (24, 30, 46)* :
23 + 32 + 45 = 100
24 + 30 + 46 = 100
23 * 32 * 45 = 33120
24 * 30 * 46 = 33120
Non sono equivalenti ma danno la stessa somma e lo stesso prodotto. Tuttavia non forniscono la stessa somma dei prodotti di tutte le combinazioni possibili:
23 * 32 + 23 * 45 + 32 * 45 = 3211
24 * 30 + 24 * 46 + 30 * 46 = 3204
* Nel caso in cui uno sia curioso di come ottenere un esempio simile a quello sopra, prima genera tutte le partizioni intere di un intero M di lunghezza 3, prendi il loro prodotto, trova i duplicati e scegli una coppia.