#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <windows.h>
using namespace std;
#define Max 10000010
bool prime[Max];
bool prime1[Max];
void primeRadiationMethod( const int& sizes ){
prime[1] = 0;
prime[2] = 1;
for( int i = 4; i <= sizes; i += 2 )
prime[i] = 0;
for( int i = 3; i <= sqrt( sizes ); ++i ){
if( prime[i] == true ){
const int step = 2 * i;
for( int j = i * i; j <= sizes; j += step )
prime[j] = false;
}
}
}
int countPrime( const int& sizes ){
int count = 0;
for( int i = 1; i <= sizes; ++i )
if( prime[i] == true )
count++;
return count;
}
void sieveMethod( const int& sizes ){
prime1[1] = 0;
for( int i = 2; i <= sqrt( sizes ); ++i ){
if( prime1[i] == true ){
for( int j = i * i; j <= sizes; j += i )
prime1[j] = false;
}
}
}
int countPrime1( const int& sizes ){
int count = 0;
for( int i = 1; i <= sizes; ++i ){
if( prime1[i] == true )
count++;
}
return count;
}
int main(){
int num;
while( cin >> num ){
memset( prime, true, sizeof( prime ) );
memset( prime1, true, sizeof( prime1 ) );
int n;
time_t b, e;
time_t b1, e1;
b = GetTickCount();
primeRadiationMethod( num );
n = countPrime( num );
e = GetTickCount();
cout << "PrimeRadiationMethod: " << n << endl;
cout << "PrimeRadiationMethodTime: " << e - b << endl;
b1 = GetTickCount();
sieveMethod( num );
n = countPrime1( num );
e1 = GetTickCount();
cout << "PrimeSieveMethod: " << n << endl;
cout << "PrimeSieveMethodTime: " << e1 - b1 << endl;
}
return 0;
}