Erastothenes

Stewart Gordon smjg_1998 at yahoo.com
Thu Jun 14 14:58:44 PDT 2007


"davidb" <ta-nospam-zz at gmx.at> wrote in message 
news:f4rvk2$1u7k$1 at digitalmars.com...
> Dave Colling wrote:
>> Has anyone confirmed that the example showing how to find primes
>> by the sieve of Erastothenes actuall works?
>> It certainly counts something, but they are not primes!
>
> You're right, definitely not (includes 0, 1, 4, 8, 10, 14, 20, 22, 25, 
> ...)
> It still features printf instead of writef and is in my opinion
> rather confusing for someone starting to learn by example.
> So here's a cleaned up version, placed in the public domain (hint)

It does work.  You appear to have not seen the line

    prime = i + i + 3;

I added this line

    writefln("i = %d; prime = %d", i, prime);

at the end of the if block to see what's happening.

But there are a few flaws with it.  It sets a bad example not only by using 
printf, but also by being badly commented and by declaring everything in one 
place.  And by using 1 and 0 instead of true and false.

But 3 to 16383 seems a peculiar range to count.  If only it added 1 to the 
count, it would give the number of primes below 1 << 14, which seems more 
what one would expect.

And if multiple iterations are meant to be for benchmarking, 10 is nowhere 
near enough on modern systems.

Stewart. 



More information about the Digitalmars-d-learn mailing list