This is the D language from Digital Mars. At this level it is essentially indistinguishable from C. The only differences are that the line "#include <stdio.h>" is replaced with "import std.stdio;", the declaration of the array Candidates is slightly different, the function printf is replaced with writefln, and no newline appears in the printed string.
This program compiles and runs on the Digital Mars D compiler for Windows.
//////////////////////////////////////////////////////////
// Name: Peter M. Maurer
// Program: Sieve of Eratosthenes
// Due: Never
// Language: D
//////////////////////////////////////////////////////////
import std.stdio;
int main()
{
// define the sieve data structure
int[1000] Candidates;
int i;
for (i=0 ; i<1000 ; i++)
{
// everything is potentially prime until proven otherwise
Candidates[i] = 1;
}
// Neither 1 nor 0 is prime, so flag them off
Candidates[0] = 0;
Candidates[1] = 0;
// start the sieve with the integer 0
i = 0;
while (i<1000)
{
// advance to the next un-crossed out number.
// this number must be a prime
while (i<1000 && Candidates[i] == 0)
{
i++;
}
// insure against running off the end of the data structure
if (i<1000)
{
// cross out all multiples of the prime, starting with 2*p.
int j;
for (j=2 ; j*i < 1000 ; j++)
{
Candidates[j*i] = 0;
}
// advance to the next candidate
i++;
}
}
// all uncrossed-out numbers are prime (and only those numbers)
// print all primes
for (i=0 ; i<1000 ; i++)
{
if (Candidates[i] != 0)
{
writefln("%d is prime",i);
}
}
return 0;
}