My recent assignment is to find Mersenne Primes between 2 and 1,000,000. For the first part of my code, I have a function to find out if a number is prime or not. The second part of my program runs a Lucas-Lehmer test to find the Mersenne number.

My problems are many: How do I get the prime numbers in the first part of my program to loop through the second part, then display as I've formatted in my final cout statements?

This is CS1 so I'm sure the instructor is trying to weed out the less dedicated. This is my nth version, I can't do it without help anymore!

Thanks

``````#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

const int LIM = 19;
long power2 (long n);
bool isPrime(int n);

int main()
{
int s,n,i;
long p; //p is an odd prime
int num;
int mPrimes;

while (num >= 1 && num <=LIM)
{
if (num%2!=0 && num%3 !=0 && num%5 !=0)
{
num = p;
num+=2;

}
}

//Mersenne calculations.

s=4; //s is the Lucas-Lehmer number where  s(0)=4
p+=2;
n=2;
for (i=1 ; i<p ; i++) //This for loop assigns to n the value (2^p)-1.
{
n=n*2;
}
n=n-1;
for (i=3 ; i<=(p) ; i++)  //Tests this many times to see if s%n==0
{
s=s*s;
s-=2;
s=s%n;
if (s==0);
num == mPrimes;
}

cout << "Mersenne Primes by Sheila Benware" << endl;
cout << setw (2) << "n" << setw (21) << "Mercenne Prime" << endl;
cout << setw (2) << "==" << setw (21) << "=============="
<< endl;
cout << setfill (' ');
cout << setw (2) << p <<setw (21) << mPrimes <<endl;

cout << "Press q to quit: ";
return 0;
}``````

> I have a function to find out if a number is prime or not.
Which isn't working.

> bool isPrime(int n);
Where is your implementation of this function?

This is step 1

``````bool isPrime(int n);
int main ( ) {
for ( int i = 1 …``````

## All 2 Replies

> I have a function to find out if a number is prime or not.
Which isn't working.

> bool isPrime(int n);
Where is your implementation of this function?

This is step 1

``````bool isPrime(int n);
int main ( ) {
for ( int i = 1 ; i <= LIM ; i++ ) {
if ( isPrime(i) ) {
cout << i << " is prime" << endl;
}
}
return 0;
}

bool isPrime(int n) {
return true;
}``````

WHEN that works, then you can expand it to

``````bool isPrime(int n);
bool isMersenne(int n);
int main ( ) {
for ( int i = 1 ; i <= LIM ; i++ ) {
if ( isPrime(i) && isMersenne(i) ) {
cout << i << " is Mersenne prime" << endl;
}
}
return 0;
}

bool isPrime(int n) {