这道题一开始用cin cout 做的,可以试着看看有什么问题, (所以建议acm用scanf 和 printf 输入输出)
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define maxn 1000010
int a[maxn];
int main()
{
int k = 1;
memset(a, 0, sizeof(a));
for(int i = 2; i < maxn; ++i){ //对素数进行打表, (可以思考如果不是素数(a[i]!=0) 这里读者可以模拟一下
if(!a[i]){
for(int j = i; j < maxn; j+=i){ //构造出a[j]暂时最大素数因子的位置 (如果有更大的在后面会被覆盖)
a[j] = k;
}
k++;
}
}
int n;
while(~scanf("%d", &n)){
printf("%d\n", a[n]);
}
return 0;
}