这道题目还可以优化,我还没想呢,人比较懒 #include<stdio.h> #include<string.h> int main() { int n; int a,b; int pos; int i,j; int mmax; int cnt; int num[6000]; scanf("%d",&n); while(n--) { memset(num,0,sizeof(num)); scanf("%d%d",&a,&b); if(a==1&&b==1) { printf("1\n"); continue; } if(a==1) for(i=2;i<=b;i++) { for(j=i;j<=b;j=j+i) { if(num[j]==0) num[j]=1; } } else for(i=a;i<=b;i++) { for(j=i;j<=b;j=j+i) { if(num[j]==0) num[j]=1; } } mmax=0; for(i=a;i<=b;i++) { cnt=0; if(num[i]==1) { for(j=1;j<=i;j++) { if(i%j==0) { cnt++; } } } if(cnt>mmax) { mmax=cnt; pos=i;// } } printf("%d\n",pos); } return 0; }