题目链接:here~~
在找素数的时候把找的数对应的最大素因子的序数赋到一个数组里
#include <iostream>
#include <string.h>
using namespace std;
#define N 1000010
int prime[N];//存放数n的最大质因子是第几个
int nprime;
void doprime()
{
int i, j;
nprime = 0;
memset(prime, 0, sizeof(prime));
prime[1] = 0;
for (i=2; i<N; i++)
{
if (!prime[i])
{
++nprime;
for (j = i; j<N; j+=i)
prime[j]=nprime;
}
}
}
int main()
{
int n;
doprime();
while (cin>>n)
cout<<prime[n]<<endl;
return 0;
}