delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/08/17/01:06:18

From: Charles Krug <charles AT pentek DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Prime number generation
Date: Wed, 13 Aug 1997 10:19:06 +0100
Lines: 71
Message-ID: <33F17C09.1CE7@pentek.com>
NNTP-Posting-Host: mail.pentek.com
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I'm generating a rather long portable list of prime numbers using this
program.

/********************************************************************
* primex.cc -- generates a list of primes                           *
********************************************************************/

unsigned long primes[32768],          // array of primes
         curr_value(3),          // current value being tested
         first_empty(1),         // first empty member
         curr_prime,             // the current prime
         prime_index;            // present offset into primes

main()
{
    // initialize first prime number.
    primes[0] = 2;

    while (first_empty < 32768)
    {
        // initialize inner loop
        prime_index = 0;

        while (prime_index < first_empty)
        {
            curr_prime = *(primes + prime_index);

            /* Compare to the current prime
                in this case, we've found a prime factor */
            if (curr_value % curr_prime == 0)
                break;

            // We may be at the end of our rope here
            else
            {
                ++prime_index;    // update the index
                if (((curr_prime * curr_prime) > curr_value) ||
                    (prime_index == first_empty))

                // We have a winner
                {
                    *(primes + first_empty) = curr_value;
                    ++first_empty;
                    // write to the file
                    break;
                }
            }

        }
        curr_value += 2;
    }
    return(0);
}

The output is the following c source file:

/* primes.c -- list of 32767 prime numbers */
long primes[32768] = {2, 3, 5, 7, 11, 13,  . . . etc. };

(Yes, Chris, I tested my conditionals and they work as expected. :-) )

Question:  Is there an alternative algorithm for generating a list of
primes?  If so, what are the merits and demerits of the alternative
approach.

-- 
Charles Krug, Jr.

> In an infinite, non repeating set,
> any finite subset will be found an
> infinite number of times. -- Like Kevin Bacon movies
ogramming doesn't have to be hard, but there's no law that says it has
to be effortless either.

There. Just had to get that off my chest :)

-- 
------------ Elliott Oti ---------------
   ------------- http://www.fys.ruu.nl/~oti  ---------

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019