题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2136
求某个数最大素数因子的位置。
View Code
1 #include<iostream> 2 const int MAXN=1000004; 3 using namespace std; 4 bool prime[MAXN]; 5 int res[MAXN];//res[j]存放j的最大素数因子的位置,即答案 6 7 int main(){ 8 int count=1; 9 for(int i=2;i<MAXN;i++){ 10 if(!prime[i]){ 11 res[i]=count;//保存素数i的位置 12 for(int j=i;j<MAXN;j+=i){ 13 prime[j]=true; 14 res[j]=count; 15 } 16 count++; 17 } 18 } 19 int n; 20 while(~scanf("%d",&n)){ 21 printf("%d\n",res[n]); 22 } 23 return 0; 24 }