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