题目大意:在素数表中,2的编号是1,3的编号是2,5的编号是3。现在给出N(N<1000000),求N的最大的质因子在素数表中的编号
考察点:筛选法求素数
思路分析:在做筛选法的时候开个数组记录他的最大质因子就行了,这个数是由哪个数的倍速筛出来的,那这个数的最大的质因子就是它。
#include<stdio.h>
int f[1000001];
void yuchuli()
{
int i,s,j;
memset(f,0,sizeof(f));
s=1;
for (i=2;i<=1000000;i++)
if (f[i]==0)
{
j=1;
while (i*j<1000000) {f[i*j]=s;j++;}
s++;
}
}
int main()
{
yuchuli();
int n;
while (scanf("%d",&n)!=EOF)
printf("%d\n",f[n]);
return 0;
}