Pagina 1 di 2
numeri primi algoritmi
Inviato: 16 ott 2006, 16:36
da raffa82
Ciao ragazzi,
sono nuovo del sito ed ho una curiosità sulla primalità di un numero.
In realta quello che voglio sapere è:
Esiste un algoritmo che mi dice se un numero n è primo compiendo al più n passi,
e questi n passi sono operazioni elementari come addizione o sottrazione?
Inviato: 16 ott 2006, 17:01
da Nonno Bassotto
Sì, almeno per n grande. Di solito il numero di passi si misura con il numero di cifre di n, che è circa log n. È stato trovato non molto tempo fa un algoritmo di primalità (cioè che mi dice se un numero è primo o no) che impiega un numero di passi polinomiale nel numero di cifre. Questo significa che il numero di passi necessario è dell'ordine di p(log n), dove p è un certo polinomio. Questo è minore di n per n grande.
L'articolo che presenta l'algoritmo è qui
http://fatphil.org/maths/AKS/
http://en.wikipedia.org/wiki/AKS_primality_test
curiosità ulteriore
Inviato: 16 ott 2006, 17:09
da raffa82
ciao nonno,
grazie mille per la celere risposta,
tuttavia avrei una curiosità ulteriore che forse puoi torgliermi senza che io debba leggermi come funziona tutto l'algortmo.
Il numero di passi che compie,
che tipo di operazioni svolge?
Per indenderci usa per esempio moltiplicazioni, divisioni.....
che credo computazionalmente siano ben diversi da addizioni e sottrazioni.
Grazie mille per la tua disponibilità
ulteriore curiosità
Inviato: 16 ott 2006, 17:13
da raffa82
ma questo algoritmo mi può dire anche in caso il numero sia non primo,
per es se è prodotto di due num, quali sono questi due numeri?
o roba del genere.
Inviato: 16 ott 2006, 17:45
da Ponnamperuma
Se n è composito, dunque non primo, esiste un teorema che dice che n ha un fattore $ \leq \sqrt{n} $... Vero è che per n grande può essere difficoltoso calcolare la sua radice quadrata, ma comunque mi pare un risultato molto interessante!

Re: curiosità ulteriore
Inviato: 16 ott 2006, 18:40
da fph
raffa82 ha scritto:
Il numero di passi che compie,
che tipo di operazioni svolge?
Per indenderci usa per esempio moltiplicazioni, divisioni.....
che credo computazionalmente siano ben diversi da addizioni e sottrazioni.
Un'addizione o una sottrazione impiegano un numero di passi proporzionale a log n. Una moltiplicazione o una divisione impiegano un numero di passi proporzionale a $ (\log n)^2 $, con l'algoritmo "in colonna", ma con algoritmi piu' sofisticati si scende a $ \log n \log \log n $ (per valori di n molto grandi).
Quindi il risultato enunciato da Nonno non cambia, il numero di operazioni è sempre un polinomio in log n, anche se il suo grado può aumentare.
ciao,
curiosità
Inviato: 16 ott 2006, 23:17
da raffa82
ragazzi so che non è una domanda matematica,
ma voi forse ne saprete più di me sui misteri e i piaceri dei numeri primi.
La mia domanda è relegata alla fantasia.
Ma se uno creasse un algoritmo che in tempo polinomiale dicesse se un numero è primo o senno ne desse i numeri che lo compongono,
come farebbe a ricavarci soldi?
Io stavo pensando di decarmi a quello ma vorrei sapere se gli sforzi potrebbero essere ricompensati, o sarebbe puro tempo usato nel piacere della matematica
Inviato: 16 ott 2006, 23:36
da SkZ
crittografia!
moltissima crittografia si basa sulla difficolta' di scomporre in fattori primi numeri molto grandi.
http://it.wikipedia.org/wiki/RSA
Non so quanti soldi riusciresti a fare, ma ti arriverebbero molte maledizioni!

ultima curiosità
Inviato: 16 ott 2006, 23:45
da raffa82
conoscete qualche libreria in c++ per manipolare numeri molto molto grandi?
grazie mille, siete tutti molto gentili
Inviato: 17 ott 2006, 00:08
da SkZ
Re: curiosità
Inviato: 17 ott 2006, 00:50
da Nonno Bassotto
raffa82 ha scritto:ragazzi so che non è una domanda matematica,
ma voi forse ne saprete più di me sui misteri e i piaceri dei numeri primi.
La mia domanda è relegata alla fantasia.
Ma se uno creasse un algoritmo che in tempo polinomiale dicesse se un numero è primo o senno ne desse i numeri che lo compongono,
come farebbe a ricavarci soldi?
Io stavo pensando di decarmi a quello ma vorrei sapere se gli sforzi potrebbero essere ricompensati, o sarebbe puro tempo usato nel piacere della matematica
Credo che esista anche per fattorizzare in tempo polinomiale, il collo di bottiglia dovrebbe essere testare la primalità, ma non sono sicuro. Il fatto è che in tempo polinomiale non vuol dire efficiente, se i coefficienti sono grossi. Un algoritmo che ci metta 10000000000000000000000000000000000000000000000000*(numero di cifre)^2 anni a fattorizzare un numero ha pochi utilizzi pratici.
Quanto a farci i soldi, se tu scoprissi un algoritmo che fattorizza i numeri davvero velocemente, hai grosso modo le seguenti possibilità
1) L'algoritmo è più efficace di quelli attuali, ma non molto. Le banche raddoppiano il numero di cifre delle chiavi che usano e stanno al sicuro.
2) L'algoritmo è spaventosamente più efficace di quelli attuali, nel qual caso
2a) Pubblichi l'algoritmo su una rivista, dopo di che l'economia mondiale crolla.
2b) Ti tieni l'algoritmo per te e fai una montagna di soldi finché non ti beccano. Purtroppo potrebbe essere moooolto facile essere beccato interagendo in transazioni finanziarie.
2c) Annunci di avere l'algoritmo, ma dici che non lo pubblichi per evitare il caos. Il giorno dopo la NSA ti porta a Guantanamo.
2d) Vendi a un prezzo spaventoso l'algoritmo a qualche società di sicurezza, dopo di che i loro scagnozzi ti consegnano alla NSA...
Uhmmm... mica facile ricavarne veramente dei soldi!

Re: ultima curiosità
Inviato: 17 ott 2006, 01:26
da fph
raffa82 ha scritto:conoscete qualche libreria in c++ per manipolare numeri molto molto grandi?
Lo standard de facto dovrebbe essere la libreria GNU gmp. Ha anche un'interfaccia C++.
Comunque quello che stai pensando di fare non è per nulla un compito facile... auguri.

Inviato: 17 ott 2006, 02:38
da SkZ
un consiglio: non puntare tanto sulla potenza del tuo computer quanto su quella del tuo cervello. I principali istituti hanno accesso a calcolatori che ci possiamo solo sognare, quindi in questo caso affrontare il problema a "brute force" aiuta poco.
mi aggiungo agli 'in bocca al lupo' e sta attento ai numeri primi (io per colpa loro ci ho rimesso una ragazza

)
Penso che potrebbe essere utile dare un'occhiata a "quanto c'e' in letteratura" sulla Congettura di Riemann sui numeri primi (ne so poco, fph&C di sicuro sapranno dirti di piu' e meglio)
http://it.wikipedia.org/wiki/Congettura_di_Riemann
edit:
Lo so che postare tanti link non e' molto carino ma qui
http://matematica.uni-bocconi.it/indice ... iprimi.htm
ci sono vari articoli intetressanti sull'argomento che magari ti potrebbero aiutare
@fph: una idea

si potrebbe aprire una sezione solo per i numeri primi

domanda di programmazione
Inviato: 17 ott 2006, 03:28
da raffa82
ragazzi non mi pare vero,
siete grandissimi.
Grazie mille.
Ora ho però ancora qualche problema pratico da risolvere.
Ho scaricato la libreria GMP,
ma mi sta dando un sacco di fastidi,
qualcuno può aiutarmi?
Uso visual studio 2005 e non sono sicuro di saperlo configurare bene
Inviato: 17 ott 2006, 03:58
da SkZ
Mi stavo leggendo il sito delle gmp e nella sezione "Help:guest accounts needed" scrivono
"The systems need to run Unix (such as BSD or GNU/Linux). (People sometimes offer us accounts on Windows machines; unfortunately, that isn't useful since we don't develop GMP for such arcane platforms.)"
trovato altro: guarda qui
http://www.swox.com/gmp/manual/Notes-fo ... stems.html