杭电acm 2521反素数题,小弟愚昧不知我的代码哪错了,求大神赐教。看到别...

发布网友 发布时间:6小时前

我来回答

1个回答

热心网友 时间:5小时前

欧拉公式+打表
你的就算对也是超时。
用数组就是把数据范围内所有符合条件的数都存起来,每个数只计算一次
给你个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;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com