The code
//
// Sieve of Erathosthenes
//
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main ()
{
const int TO = 100;
int sieve[TO + 1]; // Just ignore sieve[0]
int index;
int count;
//
// first fill the sieve
//
for(index=0; index < TO + 1; index++) sieve[index]=index;
//
// start marking out non primes
// start at 2
for(index=2; index <= sqrt(TO); index++) {
if(! sieve[index]) continue; // already marked out
for(int inner=index+index; inner < TO + 1; inner+=index)
sieve[inner]=0; // mark out all multiples of index
}
//
// count the primes
//
count=0;
for(index=2; index < TO +1; index++)
if(sieve[index]) count++;
//
// print the primes
//
cout << count << " Primes to " << TO << endl;
count=0;
for(index=2; index < TO +1; index++)
if(sieve[index]) {
cout << setw (5) << sieve[index];
if(!(++count % 5)) cout << endl;
}
//
// print the twin primes
//
cout << endl << "Twin Primes " << endl;
for(index=2; index< TO; index++)
if(sieve[index] && sieve[index+2])
cout << sieve[index] << "\t"
<< sieve[index+2] << endl;
system("pause");
return 0;
}