Refactoring Code C++

// RefactoringExercise.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
/* Compute prime numbers, after Knuth, Vol 1, Sec 1.3.2, Alg. "P". */


class Primes {
  
public:
    const long DEFAULT_STOP = 429496729L;
    /** The first prime number */
    const long FP = 2;

   int MAX = 100;


    void mainMethod(long stopIn) {
     
        long* prime = new long[MAX];

        long stop = DEFAULT_STOP;
        if (stopIn > 0) {
            stop = stopIn;
        }

        prime[1] = FP;       // P1 (ignore prime[0])
        long n = FP + 1;       // odd candidates
        int j = 1;        // numberFound

        bool isPrime = true;  // for 3

        do {

            if (isPrime) {
                if (j == MAX - 1) {
                    // Grow array dynamically if needed
                    long* np = new long[MAX * 2];
                    memcpy(np, prime, sizeof(long) * MAX);
                    MAX *= 2;
                    prime = np;
                }
                prime[++j] = n;  // P2
                isPrime = false;
            }
            n += 2;        // P4

            for (int k = 2; k <= j && k < MAX; k++) {  // P5, P6, P8
                long q = n / prime[k];
                long r = n % prime[k];
                if (r == 0) {
                    break;
                }
                if (q <= prime[k]) {    // P7
                    isPrime = true;
                    break;
                }
            }

        } while (n < stop);        // P3

        for (int i = 1; i <= j; i++)
            std::cout << prime[i] << std::endl;
    }
};



int main()
{
    Primes p;
     p.mainMethod(1000); 

}