is this output correct?

i am checking for messene primes.

Code:

#include <iostream>
#include <iomanip>
using namespace std;
bool IsPrime (long n );
long power2 ( long n );
int main()
{
char reply;
cout << "Mersenne Primes by corey" << endl;
cout << endl;
cout << "n" << setw(30) << setfill(' ') << "Mersene Prime" << endl;
cout << "==" << setw(29) << setfill(' ')<< "=============" << endl;
for ( int i = 0; i < 100; i++ ) {
if ( IsPrime ( i ) )
power2(i);
}
cin >> reply;
return 0;
}
bool IsPrime(long n)
{
int i = 0;
int counter = 0;
for ( i = 1; i <= n; i++ )
{
if ( n % i == 0 )
{
counter++;
}
}
if (counter == 2)
return true;
else
return false;
}
long power2 ( long n )
{
cout << n << setw(30) << setfill(' ') << (1L << n) - 1 << endl;
return 0;
}

output:

Code:

Mersenne Primes by corey
n Mersene Prime
== =============
2 3
3 7
5 31
7 127
11 2047
13 8191
17 131071
19 524287
23 8388607
29 536870911
31 2147483647
37 31
41 511
43 2047
47 32767
53 2097151
59 134217727
61 536870911
67 7
71 127
73 511
79 32767
83 524287
89 33554431
97 1

thank you