884

#include <iostream>
#include <vector>
#include <math.h>
#include <fstream>
#include <cstdlib>

#define SIZE 1000005

using namespace std;

int arr[1000005];
int prime[1000005];
vector<int> v;



int main()
{

	int n;

	/*prime[2]=0;
	arr[2]=0;
	for(int i=3;i<SIZE;i++)
	{
		arr[i]=0;
		if(i%2==0)
			prime[i]=1;
		else
		prime[i]=0;

	}
	*/
	double p=sqrt(SIZE);
	for(int i=3;i<(p+5);i+=2)
	{
		if(prime[i]==0)
		{
			for(int j=i+i;j<SIZE;j+=i)
			{
				prime[j]=1;
			}
		}
	}

	v.push_back(2);//
	for(int i=3;i<1010;i++)
	{
        if(prime[i]==0 && i%2!=0)
		{
			v.push_back(i);
		}
	}

	//cout<<v.size();

	arr[1]=0;
	arr[2]=1;
		for(int i=3;i<SIZE;i++)
		{
			if(prime[i]==0 && i%2!=0)
			{
				arr[i]+=(arr[i-1]+1);
				continue;
			}
			int tmp = i;

			int j=0;
			while(tmp>=(v[j]*v[j]))
			{
				if(tmp%v[j]==0)
				{
					tmp/=v[j];
					arr[i]++;
					j=-1;
				}
				j++;
			}
			if(tmp)
			arr[i]++;

			arr[i]+=arr[i-1];
		}

		while(cin>>n)
		{
			int sum=0;
			cout<<arr[n]<<"\n";
		}

	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *