发布网友 发布时间:2024-10-29 16:30
共1个回答
热心网友 时间:2024-10-29 16:49
欧拉公式+打表
你的就算对也是超时。
用数组就是把数据范围内所有符合条件的数都存起来,每个数只计算一次
给你个AC代码
#include "stdio.h"
#include "string.h"
#include "math.h"
int main()
{
int i,n,m,tt,t,j,k,flag,max,count[5002];
for(i=1;i<=5001;i++)
{
count[i]=0;
}
count[1]=1;count[2]=2;count[3]=2;
for (i=4;i<=5001;i++)
{
for(j=2;j<=i/2;j++)
if(i%j==0) count[i]++;
count[i]+=2;
}
scanf("%d",&t);
while (t--)
{
scanf("%d %d",&n,&m);
max=0;tt=n;
for (i=n;i<=m;i++)
{
if(count[i]>max)
{max=count[i];tt=i;}
}
printf("%d/n",tt);
}
return 0;
}