题目描述:

源码:
需要注意,若使用cin,cout输入输出,会超时。
#include"iostream"
#include"memory.h"
#define MAX 1000000
using namespace std;
int index[MAX];
int main()
{
memset(index, -1, sizeof(index));
index[1] = 0;
int sum = 0;
for(int i = 2; i < MAX; i++)
{
if(index[i] == -1)
{
sum++;
for(int j = i; j < MAX; j+= i)
index[j]=sum;
}
}
int n;
while(scanf("%d", &n) != EOF)
printf("%d
", index[n]);
return 0;
}