Quanto è difficile contare il numero di fattori di un numero intero?


30

Dato un numero intero di lunghezza n bit, quanto è difficile generare il numero di fattori primi (o in alternativa il numero di fattori) di N ?NnN

Se conoscessimo la scomposizione in fattori primi di , allora sarebbe facile. Tuttavia, se conoscessimo il numero di fattori primi o il numero di fattori generali, non è chiaro come troveremmo l'effettiva fattorizzazione in fattori primi.N

Questo problema è stato studiato? Esistono algoritmi noti che risolvono questa domanda senza trovare la scomposizione in fattori primi?

Questa domanda è motivata dalla curiosità e in parte da una domanda matematica .


3
Se il numero di fattori primi è grande, ciò implicherebbe che N ha un piccolo fattore che può essere trovato facilmente. D'altra parte, se il numero di fattori primi di N è piccolo, diciamo 2, allora è simile al problema del factoring di un prodotto di due numeri primi e sapere che il numero di fattori è 2 non sembra aiutare. Vedi questa domanda di Omid sulla loro durezza media.
Kaveh,

1
Un'altra cosa, poiché la divisione è in uniforme , il problema di contare tutti i fattori (non solo i fattori primi) è in # T C 0 e quindi è anche in P (ed è probabilmente completo anche per # T C 0 in A Riduzioni C 0 ). TC0#TC0P#TC0AC0
Kaveh,

1
Kaveh, se potessi espandere il tuo commento sopra in una risposta, sarebbe fantastico. Non vedo esattamente come la divisione in ti porti a contare i fattori in # TC 0 senza implicare anche che il factoring sia in TC 0 . Questo fraintendimento è probabilmente dovuto ai miei fallimenti, ma una risposta più dettagliata sarebbe di aiuto. TC0#TC0TC0
Derrick Stolee,

1
noto AFAIK! e questo è troppo facile. Ma non vedo dove si discute l'argomento. ps: credo di sapere, la mia definizione di non è buona (è uguale a # P ) e questo è il problema. #TC0#P
Kaveh,

1
@Artem, è definito come il numero di percorsi di accettazione di una macchina N L , e una macchina N L può usare solo la quantità logaritmica (in | y | ) di spazio per indovinare x . Stiamo indovinando troppi bit se usiamo la definizione che ho scritto, un calcolo A C 0 con polinomialmente molte ipotesi catturerebbe N P , contando allo stesso modo il numero di x s di dimensione polinomiale che una macchina A C 0 accetta su di loro darà # P#LNLNL|y|xAC0NPxAC0#P(indovina anche il calcolo e verifica che sia davvero un calcolo accettante).
Kaveh,

Risposte:


16

Questa non è la mia risposta, ma Terrence Tao ha dato una bella risposta a questa domanda su MathOverflow.

Ecco le prime righe della sua risposta. Per leggere la risposta completa, segui il link.

C'è un'osservazione del folklore che se uno fosse in grado di contare rapidamente il numero di fattori primi di un intero n, allora sarebbe probabilmente in grado di fattorizzare rapidamente n completamente. Quindi si ritiene che il problema del conteggio dei fattori primi abbia difficoltà comparabili al factoring stesso.

(Non ero sicuro che si trattasse di una risposta o di un commento. Ma è davvero una risposta, anche se non è stata scritta da me. Ho creato la risposta Wiki comunità in modo che possa essere votata o accettata senza inutilmente dandomi reputazione.)


5
A mio avviso, un puntatore a una risposta come questa merita punti reputazione (quindi non dovrebbe essere wiki della comunità), ma capisco che persone diverse hanno opinioni diverse.
Tsuyoshi Ito,

Ma questa non è una riduzione formale ....
arnab,

1
@arnab: No, non lo è. Questo è il motivo per cui scrisse "allora si sarebbe probabilmente in grado di considerare rapidamente il fattore n".
Tsuyoshi Ito

1

Come altri hanno affermato, il conteggio dei fattori richiederebbe molto probabilmente il factoring n. Tuttavia, la divisione di prova può limitare il numero di fattori. Sai, ad esempio, che ha al massimo n fattori, dal momento che nessun fattore può essere inferiore a 2. Testando se N è divisibile per 2, sai anche che N ha al massimo log 3 ( N ) fattori, ecc. il rovescio della medaglia è che ogni riduzione delle dimensioni è progressivamente più difficile - devi testare fino a N 1 / p per escludere N contenente più di fattori p .NnNNlog3(N)N1/pNp

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.