我的代码,看起来很乱,还是错误答案,但只能AC到这一步了,求正确代码
#include<stdio.h>
#include<math.h>
int isp1(int k)
{
int m,q,temp;
int h=0;
for(q=k;q>0;q--)
{
temp=1;
for(m=2;m<sqrt(q);m++)
{
if(q%m==0)
{
temp=0;
break;
}
}
if(temp==1)
{
h=q;
break;
}
}
return h;
}
int isp2(int k)
{
int m,l,p,temp;
for(p=k;p=1;p++)
{
temp=1;
for(m=2;m<sqrt(p);m++)
{
if(p%m==0)
{
temp=0;
break;
}
}
if(temp==1)
{
l=p;
break;
}
}
return l;
}
int main()
{
int n,i,m,j,k,a[1001];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
m=isp1(a[i]);
k=isp2(a[i]);
if((a[i]-m)>(k-a[i]))
printf("%d",k);
if((a[i]-m)<(k-a[i]))
printf("%d",m);
if((a[i]-m)==(k-a[i]))
printf("%d",k);
printf("\n");
}
}
return 0;
}
南洋理工ACM第169题,以小弟C语言初学者的水平,实难AC出,请求大侠略作指点,在下不胜感激
答案:2 悬赏:40 手机版
解决时间 2021-03-10 20:51
- 提问者网友:温旧梦泪无声
- 2021-03-10 09:22
最佳答案
- 五星知识达人网友:逃夭
- 2021-03-10 10:55
你的程序功能是什么
#include<stdio.h>
#include<math.h>
int isp1(int k)
{
int m,q,temp;
int h=0;
for(q=k;q>0;q--)
{
temp=1;
for(m=2;m<=sqrt(q);m++)
{
if(q%m==0)
{
temp=0;
break;
}
}
if(temp==1)
{
h=q;
break;
}
}
return h;
}
int isp2(int k)
{
int m,l,p,temp;
for(p=k;;p++)
{
temp=1;
for(m=2;m<=sqrt(p);m++)
{
if(p%m==0)
{
temp=0;
break;
}
}
if(temp==1)
{
l=p;
break;
}
}
return l;
}
int main()
{
int n,i,m,k,a[1001];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
m=isp1(a[i]);
k=isp2(a[i]);
if((a[i]-m)>=(k-a[i]))
printf("%d",k);
if((a[i]-m)<(k-a[i]))
printf("%d",m);
printf("\n");
}
}
return 0;
}//我的理解:给一个数a[i],找isp1()找在他之下的素数,isp2()找在它之上的素数,输出离a[i]最近的素数,如果距离相等就输出那个大的
#include<stdio.h>
#include<math.h>
int isp1(int k)
{
int m,q,temp;
int h=0;
for(q=k;q>0;q--)
{
temp=1;
for(m=2;m<=sqrt(q);m++)
{
if(q%m==0)
{
temp=0;
break;
}
}
if(temp==1)
{
h=q;
break;
}
}
return h;
}
int isp2(int k)
{
int m,l,p,temp;
for(p=k;;p++)
{
temp=1;
for(m=2;m<=sqrt(p);m++)
{
if(p%m==0)
{
temp=0;
break;
}
}
if(temp==1)
{
l=p;
break;
}
}
return l;
}
int main()
{
int n,i,m,k,a[1001];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
m=isp1(a[i]);
k=isp2(a[i]);
if((a[i]-m)>=(k-a[i]))
printf("%d",k);
if((a[i]-m)<(k-a[i]))
printf("%d",m);
printf("\n");
}
}
return 0;
}//我的理解:给一个数a[i],找isp1()找在他之下的素数,isp2()找在它之上的素数,输出离a[i]最近的素数,如果距离相等就输出那个大的
全部回答
- 1楼网友:醉吻情书
- 2021-03-10 12:26
你好!
发个链接过来
如果对你有帮助,望采纳。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯