------------------------------------------------------------------------------
MC logo
Fast Primes Generator
[^] Code Examples
------------------------------------------------------------------------------
<<Composite Number Eliminator Implementation pgen.cc
//
// Generate primes until you get tired of it (or run out of 
// unsigned long long).  This uses a form of the seive method which
// eliminates non-prime candidate primes by checking if they are a
// multiple of any previous prime found.  This is done efficiently by
// keeping the set of multiples of previously-found primes in a heap.
// A heap is a data structure which can quickly find the smallest
// number it contains.
//
#include <iostream>
#include <strstream>
#include "elim.h"

using namespace std;

// Figure out the number of bits for printing, since nothing in the stupid
// streams that actually outputs to strings is actually there.

// Output with appropriate wrap.
void outprime(Integer n)
{
        static int outlen = 0;  // Output line width.

        // Get the string for n.
        ostrstream os;
        os << n << ends;
        string strint = os.str();

        // Do any needed wrap.
        if(outlen + strint.length() + 1 > 75) {
                cout << endl;
                outlen = 0;
        } else {
                cout << " ";
                outlen++;
        }

        cout << strint;
        outlen += strint.length();
}

main()
{
        outprime(2);

        EliminatorCollection ec;
        ec.insert(2);
        for(int m=3; 1; m++)
        {
                if(m == ec.eliminates())
                        ec.advance();
                else {
                        //cout << m << endl;
                        outprime(m);
                        ec.insert(m);
                }
        }

        cout << endl;
}
<<Composite Number Eliminator Implementation