Mappa del sito
Indice degli aggiornamenti  27/10/18
Metti formule tra i preferiti
Contattaci
Segnalaci ad un amico

Formule e argomenti di matematica, fisica e scienze
Albert Einstein: ... la nostra conoscenza, se paragonata alla realta' e' primitiva e infantile. Eppure e' il bene piu' grande che possediamo.
... all our science, measured against reality, is primitive and childlike-and yet it is the most precious thing we have.


Versione stampabile della scheda visualizzata sotto

Seguici in Facebook    Seguici in Pinterest    Seguici in X

Informatica : Code snippets

Crivello di Eratostene

Il famoso algoritmo di Eratostene, detto 'crivello', implementato in C#. L'algoritmo ricava i numeri primi compresi tra 2 ed N, con N passato come parametro.



Linguaggio: C#

 
Parametri : rangeTop = I numeri primi compresi tra 2 e
: questo parametro.
Ritorna : Un int[] con i numeri primi ricavati
:
: ------------------------------------------------
: USA (es.:100) :
:
: int[] myNumeri = crivello(100);
: -- myNumeri.Length = quanti numeri primi
: -- myNumeri[j] il Jesimo numero primo ricavato
: ------------------------------------------------
:
: Nota: Il tutto puo' essere messo in una classe.
:

 

private int[] crivello(int rangeTop)
{
// tutti i numeri da 0 a rangeTop+1 (non usiamo 0 e 1)
// cosi' se voglio i numeri da 2 a 100, preparo un vettore
// 0..100 di 101 elementi
bool[] nums = new bool[rangeTop + 1];
// 0 e 1 non sono di utilita'
int resCnt = nums.Length-2;

// li inizializzo come numeri primi
for (int i = 0; i < nums.Length; i++)
{
nums[i] = true;
}

// crivello in azione...
// per ogni numero da 2 al max
for (int cb = 2; (cb * cb) < nums.Length; cb++)
{
// se non e' un numero primo andiamo avanti
if (! nums[cb] ) continue;


// moltiplico il numero in esame * 2,3,4..etc
// il risultato e' un NON_PRIMO (in quanto e' divisibile per
// il cb corrente) quindi viene messo a false (NON_PRIMO)
for (int c = cb + cb; c < nums.Length; c += cb)
{

if (nums[c])
{
nums[c] = false;
resCnt--; // uno di meno dei possibili numeri primi
}
}

}

// Nel vettore nums, sono rimasti a TRUE solo i numeri primi.
// Generiamo un array (vettore)
// in cui mettere solo i primi (true)
// rimasti.
// -----------------------------------------------
// Ritorniamo il vettore con i resCnt numeri primi
// -----------------------------------------------
//
int[] resBack = new int[resCnt];
int outPtr = 0;
for (int i = 2; i < nums.Length; i++)
{
// se e' primo lo ritorno...
if (nums[i])
{
resBack[outPtr] = i;
outPtr++;
}
}

return (resBack);

}



Made by Formule Development Team




MATEMATICALC by Formule - Scomposizione in fattori primi

Scomposizione in fattori primi



MATEMATICALC by Formule - Numeri primi

Numeri primi




Argomenti correlati e altri percorsi:


Numeri primi
Matematica, Elementi di aritmetica, numeri primi
(locale-Formule)

 




  Metti la scheda negli appunti    Click per visualizzare il blocco appunti Visualizza appunti    Click x svuotare blocco appunti Azzera appunti



UTILITY
FormuLe-MATEMATICALC

TROVA FORMULE

UTILITY
FormuLe-FISICALC


TROVA FORMULE

UTILITY
FormuLe-STATISTICALC

UTILITY
Formule-MATFINCALC

ARGOMENTI
Matematica

Frattali di Mandelbrot
Benoit Mandelbrot e la Geometria Frattale. Introduzione e immagini.

Statistica e giochi

Lotto e superEnalotto
Una sintetica comparazione statistica e finanziaria dei due giochi.

Ultimo aggiornamento - Last update:  27/10/2018
Privacy and cookies
© www.gobnf.com 2008-2024 - Tutto il materiale contenuto nel sito PUO' essere liberamente usato per scopi personali (studio, creazione di relazioni e tesine etc). Non e' consentito qualsiasi altro tipo di utilizzo o riproduzione. - The entire content of this site may be freely used ONLY for personal purposes (study, creation of reports etc.). It is not allowed any other use or reproduction.