1 2 3 4 5
0 1 2 1 3
题目大意:每个素数在素数表中都有一个序号,设1的序号为0,则2
的序号为1,3的序号为2,5的序号为3,以此类推。现在要求输出所
给定的数n的最大质因子的序号,0<n<1000000。
#include<iostream>
#include<stdio.h>
using namespace std;
int pi;
bool flag[1000010];
int in;
int n;
int a[1000010];
int getprime()
{
for(int i=2;i<1000010;++i)
{
if(!flag[i])
{
in++;
for(int j=i;j<1000010;j+=i)
{
flag[j]=true;
a[j]=in;//记录序号
}
}
}
}
int main(int argc, char *argv[])
{
//freopen("2136.in","r",stdin);
getprime();
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",a[n]);
}
return 0;
}
HDU 2136 Largest prime factor (筛选法求素数)
原文地址:http://blog.csdn.net/wdkirchhoff/article/details/41844449