#include<bits/stdc++.h>
using namespace std;
const int N = 1e7;
bool comp[N];
vector<int>primes;
void oldsieve()
{
    memset(comp,0,sizeof comp);
    primes.clear();
    for(int i=2;i<N;i++)
        if(!comp[i])
        {
            primes.push_back(i);
            for(int j=i*2;j<N;j+=i)
                comp[j]=1;
        }
}
void newsieve()
{
    memset(comp,0,sizeof comp);
    primes.clear();
    for(int i=2;i<N;i++)
    {
        if(!comp[i])
            primes.push_back(i);
            for(int j=0,si=primes.size();j<si&&i*primes[j]<N;j++)
            {
                comp[primes[j]*i]=1;
                if(i%primes[j]==0)break;
            }
    }
}
int main()
{
    time_t t0;
    time(&t0);
    oldsieve();
    //for(int i=0;i<20;i++)cout<<primes[i]<<' ';cout<<endl;
    newsieve();
    //for(int i=0;i<20;i++)cout<<primes[i]<<' ';cout<<endl;
    time_t t1;
    time(&t1);
    double seconds = difftime(t1,t0);
    printf("%.7f",seconds);
}