这道题目还可以优化,我还没想呢,人比较懒
#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;
}