Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace WebApp.Servizi
- {
- public class NumeriPrimiService
- {
- public List<int> GetNumeriPrimi(int limiteSuperiore)
- {
- var numbers = new List<int>();
- // crivello di Eratostene
- // inizialmente faccio finta che tutti i numeri siano primi
- // qui metto un true in corrispondenza di tutti i numeri da 0 al limite superiore
- // assumo: indice dell'array = numero, valore true = primo
- var primes = new BitArray(limiteSuperiore + 1, true);
- // ciclo sui numeri
- for (var number = 2; number <= limiteSuperiore; ++number)
- {
- // se incontro un primo
- if (primes[number])
- // "cancello" i multipli
- for (var index = number * 2; index <= limiteSuperiore; index += number)
- primes[index] = false;
- }
- // prendo i numeri che sono marcati come primi
- for (var number = 2; number <= limiteSuperiore; ++number)
- if (primes[number]) numbers.Add(number);
- return numbers;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement