topical media & game development

talk show tell print

basic-program-code-04-Ex4-11.c

? / basic-program-code-04-Ex4-11.c


  // EX4_11.CPP
  // Calculating primes using dynamic memory allocation
  include <iostream>
  include <iomanip>
  using std::cin;
  using std::cout;
  using std::endl;
  using std::setw;
  
  int main()
  {
     long* pprime = 0;              // Pointer to prime array
     long trial = 5;                // Candidate prime
     int count = 3;                 // Count of primes found
     int found = 0;                 // Indicates when a prime is found
     int max = 0;                   // Number of primes required
  
     cout << endl
          << "Enter the number of primes you would like (at least 4): ";
     cin >> max;                    // Number of primes required
  
     if(max < 4)                    // Test the user input, if less than 4
        max = 4;                    // ensure it is at least 4
  
     pprime = new long[max];
  
     *pprime = 2;                   // Insert three
     *(pprime + 1) = 3;             // seed primes
     *(pprime + 2) = 5;
  
     do
     {
        trial += 2;                            // Next value for checking
        found = 0;                             // Set found indicator
        for(int i = 0; i < count; i++)         // Division by existing primes
        {
           found =(trial % *(pprime + i)) == 0;// True for exact division
           if(found)                           // If division is exact
              break;                           // it's not a prime
        }
        if (found == 0)                  // We got one...
           *(pprime + count++) = trial;  // ...so save it in primes array
     } while(count < max);
  
     // Output primes 5 to a line
     for(int i = 0; i < max; i++)
     {
        if(i % 5 == 0)                   // New line on 1st, and every 5th line
           cout << endl;
        cout << setw(10) << *(pprime + i);
     }
     delete [] pprime;                         // Free up memory
     pprime = 0;                               // and reset the pointer
     cout << endl;
     return 0;
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.