Numeri primi

Anonimo
2013-01-22T05:10:05+00:00

Ciao,

Vorrei con una function stabilire se un numero positivo di tipo long è primo oppure no.

Vorrei evitare il ragionamento del crivello di Eratostene che mi sembra antieconomico. Grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-01-22T15:45:09+00:00

Ciao Mauro, speravo comunque in un diverso algoritmo

<cut>           

L'algoritmo è comunque valido. L'ho testato anche in vb.net dove un intero può arrivare a:

9.223.372.036.854.775.807

Ho chiesto se questo numero è primo: 9.223.372.036.850.770.027 (e lo è).

Il tutto ha richiesto circa 45/50 secondi con un processore i7 3612QM. Considera il numero di operazioni necessarie (oltre tre miliardi).

Scarica TestPrimi.zip da qui se vuoi provare:

https://skydrive.live.com/?cid=0361684D94BB851A#cid=0361684D94BB851A&id=361684D94BB851A%21281

Scritto, al volo, in vb.net

La risposta è stata utile?

0 commenti Nessun commento

18 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-01-23T16:50:10+00:00

    Però .... che grande idea!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-01-23T16:36:23+00:00

    Cavolo Fratello!, hai ragione, però funziona ugualmente :-)

    ;-)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-01-23T15:35:27+00:00

     

    Poi, per evitare sovrapposizione di insiemi avrei modificato gli intervalli così:

     

    Ciao Fratello.

    E Int (il nome che hai assegnato) non ti ricorda nulla... ;-)

    Cavolo Fratello!, hai ragione, però funziona ugualmente :-)

    E' meglio cambiare Int con rng:

    nome rng riferito a: =RIF.RIGA(Foglio1!$Z$1:INDIRETTO("Foglio1!$Z$"&Foglio1!$A$1))

    e in B1: =SE(SOMMA(--(RESTO($A$1;rng)=0))=2;"Primo";"No Primo") matriciale

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-01-23T15:29:26+00:00

     

    Poi, per evitare sovrapposizione di insiemi avrei modificato gli intervalli così:

     

    Ciao Fratello.

    E Int (il nome che hai assegnato) non ti ricorda nulla... ;-)

    Inoltre, mi sembra di capire che sei limitato dal numero di righe del foglio come numero da valutare.

    La risposta è stata utile?

    0 commenti Nessun commento