回 帖 发 新 帖 刷新版面

主题:ACM通不过急啊

#include<stdio.h>
#include<math.h>
int panduan(int n)   //判断素数
{
    int i;
    for(i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            return 0;
        }
    }
    return 1;
}
int main()
{
    int m,last,next,n;
scanf("%d",&n);
getchar();
while(n--)
{

scanf(" %d",&m);

if(m==1) printf("2 1\n");
if(m==2) printf("3 1\n");  //考虑1,2两个数左边没有素数
if(m>2)
{
last=m-1;
next=m+1;
 while(!panduan(last))
 {
  last--;
 }
 while(!panduan(next))
  {
    next++;
 }
 if(m-last<=next-m)
 {
 printf("%d %d\n",last,m-last);
 }
 
if(m-last>next-m)
 {
  printf("%d %d\n",next,next-m);
  }
}
}
    return 0;
}

回复列表 (共1个回复)

沙发

描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0

我来回复

您尚未登录,请登录后再回复。点此登录或注册