Advertisement

素数的距离

阅读量:

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

输入 第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),

输出 每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。

样例输入

36810

样例输出

5 17 111 1

个人理解:

首先要将特殊情况拎出来,1的左侧是0,需添加一个条件,而其余的就判断是不是素数,然后把左右端的最近距离求出来。

结果 时间 内存 语言
Accept 84 240 c

代码:

复制代码
 #include<stdio.h>

    
 int yy(int(n))
    
 {
    
     int i;
    
      if(n==1)return 0;
    
     for( i=2;i*i<=n;i++)
    
    if(n%i==0)
    
         return 0;
    
     return 1;
    
 }
    
 int main()
    
 {
    
     int m,n,a,b,c,d;
    
     scanf("%d",&m);
    
     while(m--)
    
     {
    
     scanf("%d",&n);
    
     if(yy(n))
    
         printf("%d 0\n",n);
    
         else{
    
             a=b=n;
    
             while(!yy(a))
    
             {
    
                 a=a+1;
    
             }
    
             while(!yy(b))
    
             {
    
                 b=b-1;
    
             }
    
             c=a-n;
    
             d=n-b;
    
             if(b==0)
    
             {
    
               printf("%d %d\n",a,c);
    
             }
    
              else if(c>=d)
    
               printf("%d %d\n",b,d);
    
              else
    
               printf("%d %d\n",a,c);
    
  
    
         }
    
  
    
     }
    
     return 0;
    
 }
复制代码
复制代码
AI写代码

全部评论 (0)

还没有任何评论哟~