素数的距离
发布时间
阅读量:
阅读量
描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出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)
还没有任何评论哟~
