meh, yeah i must have given you an older version of it, although it doesnt effect the security, since it doesnt require primes, only numbers that meet other requirements that all primes just happen to meet. The only non-primes that get selected are pseudo-primes that have roots of the form 2X+1, i.e. 4X^2 + 4X + 1.
AFAIK, the code can be run under linux with a few modifications, for example, you dont have toinclude windows.h and insert
For my purposes, since I use a much larger number of primes, I load them directly from a database of primes. This version is mainly for applications that dont have access to this database. I can give you the database if you want, but it is quite large at 775MB.
#define DWORD unsigned int
#define BYTE unsigned char
Here is the database, its compressed with RAR so you need to get WinRAR