转载

素数距离问题

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

输入
第一行给出测试数据组数N(0<N<=10000) 接下来的N行每行有一个整数M(0<M<1000000),
输出
每行输出两个整数 A B. 其中A表示离相应测试数据最近的素数,B表示其间的距离。

现将自己的代码公布如下:但还存在的问题就是运算时间太长,还未解决

#include <stdio.h>

int Judge(int num);

int main() {  int group;  scanf("%d",&group);  int a[10000];  for(int j = 0;j < group;j++)  {   scanf("%d",&a[j]);  }  int i = 0;  while(group--)  {   int Lnum;   int Rnum;   int length;   Lnum = a[i];   Rnum = a[i];   length = 0;   if(Judge(a[i]) == 1)    printf("%d %d/n",a[i],length);   while(Lnum--)   {    Rnum++;    length++;    if(Lnum > 1)    {     if(Judge(Lnum) == 1)     {       printf("%d %d/n",Lnum,length);      break;     }     else if(Judge(Rnum) == 1)      {       printf("%d %d/n",Rnum,length);       break;      }    }    else    {     if(Judge(Rnum) == 1)      {       printf("%d %d/n",Rnum,length);       break;      }    }   }   i++;  }    return 0; }

int Judge(int num) {  int i;  for(i = 2;i < num;i++)  {   if(num % i == 0)   {    break;   }  }  if(i == num)   return 1;  else   return 0;

}

正文到此结束
Loading...