albeganasa
14-06-2008, 20:18
Ciao a tutti, mi ha sempre affascinato come programmi come ORTHOS e PRIME95 facessero girare i nostri processori!
Adesso vorrei crearne uno semplice, in casa diciamo.
Mi sono studiato un pò la situazione:
Numero di Mersenne: M(n)=2^n - 1
Successione: S(n) = s(n-1)^2 -2 --> (s(0) = 4)
Un numero di mersenne è primo solo se S(n-2) divide M(n), Oppure per metterlo in termini informatici S(n-2) MOD M(n) = 0.
Adesso ho un po di domande su come iniziare!
In testa ho qualche idea...Ma i problemi sono parecchi.
Per testare se è primo il numero S(n-2) deve essere diviso per tutti i numeri M(n), con N numero primo, piu piccolo di S(n-2).
E' esatto??
Perchè Wikipedia lo spiega in modo obrobrioso...
Detto questo ciò mi spaventa:
Il test è talmente rapido e facile da programmare, che nel 1978 due studenti delle superiori dimostrarono che il numero di Mersenne 221701 − 1 è primo, battendo il precedente record del più alto numero primo allora conosciuto.
Eppure non sono cosi talpa in informatica.
Ho altre perplessità:
Che tipologia di variabile utilizzo per salvare quei numeri che diventano immensamente grandi??
Ovviamente dovrei creare un vettore per contenere i numeri Primi M(n) da dare in pasto a S(n-2), ma di che tipo e di che lunghezza??
Come imposto il ciclo che controlla il numero?
Lo posso basare su Mod=0, ma appena mi trova il mumero il ciclo finisce.
Dovrebbe essere un ciclo dentro ciclo.
Il primo ciclo calcola il numero S e lo da in pasto al secondo ciclo che calcola M, il terzo ciclo fa tutti i controlli e da come risultato se è Primo o no, e cosi via si torna al primo ciclo.
Ditemi se sbaglio oppure dico il vero.
Volevo inoltre sapere, secondo la VS esperienza, quale piattaforma è meglio utilizzare, io sono abituato con Vb.net e pensavo di utilizzare quella.
Grazie a tutti.
Adesso vorrei crearne uno semplice, in casa diciamo.
Mi sono studiato un pò la situazione:
Numero di Mersenne: M(n)=2^n - 1
Successione: S(n) = s(n-1)^2 -2 --> (s(0) = 4)
Un numero di mersenne è primo solo se S(n-2) divide M(n), Oppure per metterlo in termini informatici S(n-2) MOD M(n) = 0.
Adesso ho un po di domande su come iniziare!
In testa ho qualche idea...Ma i problemi sono parecchi.
Per testare se è primo il numero S(n-2) deve essere diviso per tutti i numeri M(n), con N numero primo, piu piccolo di S(n-2).
E' esatto??
Perchè Wikipedia lo spiega in modo obrobrioso...
Detto questo ciò mi spaventa:
Il test è talmente rapido e facile da programmare, che nel 1978 due studenti delle superiori dimostrarono che il numero di Mersenne 221701 − 1 è primo, battendo il precedente record del più alto numero primo allora conosciuto.
Eppure non sono cosi talpa in informatica.
Ho altre perplessità:
Che tipologia di variabile utilizzo per salvare quei numeri che diventano immensamente grandi??
Ovviamente dovrei creare un vettore per contenere i numeri Primi M(n) da dare in pasto a S(n-2), ma di che tipo e di che lunghezza??
Come imposto il ciclo che controlla il numero?
Lo posso basare su Mod=0, ma appena mi trova il mumero il ciclo finisce.
Dovrebbe essere un ciclo dentro ciclo.
Il primo ciclo calcola il numero S e lo da in pasto al secondo ciclo che calcola M, il terzo ciclo fa tutti i controlli e da come risultato se è Primo o no, e cosi via si torna al primo ciclo.
Ditemi se sbaglio oppure dico il vero.
Volevo inoltre sapere, secondo la VS esperienza, quale piattaforma è meglio utilizzare, io sono abituato con Vb.net e pensavo di utilizzare quella.
Grazie a tutti.