Tom Moran wrote:
>   The idea is straightforward: Create a boolean array with True for each
> potential prime from 2 .. N.  Then take each known prime in turn (2 is a
> known prime) and mark all its multiples as False (not prime).  The ones
> left True when you are done are not divisibly by any number less than
> themselves (except 1 of course) so they must be primes.  It's pretty
> straightforward to code.

There's also a solution that is difficult to code, except in Ada:
Numbers are passed from task to task. Each task holds a prime and passes
numbers that are not multiples of that prime. If a number gets past the
last task, a new task is created for that number. Initially there is a
single task, holding 2.

Jeff Carter
"You tiny-brained wipers of other people's bottoms!"
Monty Python & the Holy Grail