题意:找出n个数中,所含素数因子最大的那个数;
#include"stdio.h" #include"string.h" #include"math.h" #define N 30000 int map[N]; int main() { int i,j,k,h,n,m; memset(map,0,sizeof(map)); map[1]=1; for(i=2;i<N;i++) { if(map[i]==0) for(j=i;j<N;j=j+i)//这里大于i小于2*i的最大素因子都是i,所以制成了i;
map[j]=i; } while(scanf("%d",&k)!=EOF) { m=-1; while(k--) { scanf("%d",&n); if(map[n]>m) { m=map[n]; h=n; } } printf("%d\n",h); } return 0; }