题目大意:就是求一个数n的最大素数因子。
思路:类似于筛素数,每次记录当前最大的素数因子,并同时记录该素数的序号。
View Code
#include <stdio.h> #include <string.h> int prime[1000000]; int pos[1000000]; int main() { int i,j,k=1,n; prime[1]=1; pos[1]=0; memset(prime,0,sizeof(prime)); for(i=2;i<1000000;i++) if(prime[i]==0){ prime[i]=i; pos[i]=k++; for(j=i+i;j<1000000;j+=i) prime[j]=i; } while(~scanf("%d",&n)){ printf("%d\n",pos[prime[n]]); } }