NYOJ 24(素数距离)

简介:   素数距离问题 时间限制:3000 ms | 内存限制:65535 KB 难度:2   描述现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。

 

素数距离问题

时间限制: 3000 ms | 内存限制: 65535 KB
难度: 2
 
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
 
输入
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
3
6
8
10
样例输出
5 1
7 1
11 1
 #include<stdio.h>
#include<string.h>
#include<math.h>
#define N 1500000
bool visit[N];
void prim()
{
	int temp,i,j;
	temp=(int)sqrt(N+0.5);
	memset(visit,0,sizeof(visit));
	for(i=2;i<=temp;i++)
	if(!visit[i])
	{
		for(j=i*i;j<=N;j+=i)
			visit[j]=1;
	}
}
/* 
bool is_prim(int x) 
{  
	int s;
	for(s=2;s<=sqrt(1.0*x);s++) 
		 if(x%s==0)   
			 return false;
	return true;
 }
 */
int main()
{
	prim();
	int T,m;int i,j=0,k; int temp1,temp2;
	scanf("%d",&T); 
	while(T--) 
	{ 
		scanf("%d",&m); 
		 if(m==1)  
		 {  
			 printf("2 1\n");  
			 continue; 
		 } 
		 /*
		 for(i=m;i>1;i--) 
		 {
			 if( is_prim(m))
			 {
				 printf("%d %d\n",m,0);
				 break;
			 }
			 */
			for(j=m;j>=1;j--)
			{
				if(!visit[j])
					temp2=m-j;
				for(k=m+1;;k++)
					if(!visit[k])	
					{
						temp1=k-m;
						break;
					}
				if(!visit[j]&&!visit[k])
				{
					if(temp1>=temp2)
                                                           /*等号表示相同情况下应输出左边的*/

						printf("%d %d\n",j,temp2);
					else
						printf("%d %d\n",k,temp1);
					break;
				}
			}
	}							 
	return 0;
}


                

 

目录
相关文章
|
7月前
|
存储 算法 程序员
平方根倒数快速算法
平方根倒数快速算法
76 0
|
2月前
acwing 173 矩阵距离
acwing 173 矩阵距离
14 0
五种常用距离的代码实现:欧式距离、曼哈顿距离、闵可夫斯基距离、余弦相似度、杰卡德距离
五种常用距离的代码实现:欧式距离、曼哈顿距离、闵可夫斯基距离、余弦相似度、杰卡德距离
|
7月前
8.求出100~230之间所有素数之和,先在屏幕上输出,再求和
8.求出100~230之间所有素数之和,先在屏幕上输出,再求和
36 0
|
7月前
|
算法 测试技术 C#
【矩阵】【方向】【素数】3044 出现频率最高的素数
【矩阵】【方向】【素数】3044 出现频率最高的素数
|
机器学习/深度学习 算法 测试技术
C++二分算法: 找出第 K 小的数对距离
C++二分算法: 找出第 K 小的数对距离
|
算法
7-142 最大子列和问题
7-142 最大子列和问题
71 0
C/C++编程题之质数因子
C/C++编程题之质数因子
素数幻方 求四阶的素数幻方。即在一个4*4的矩阵中,每一个格填入一个数字,使每一行、每一列和两条对角线上的四个数字所组成的四位数,均为可逆素数(改数逆序后仍是素数)。 提示:这样的矩阵有很多。
素数幻方 求四阶的素数幻方。即在一个4*4的矩阵中,每一个格填入一个数字,使每一行、每一列和两条对角线上的四个数字所组成的四位数,均为可逆素数(改数逆序后仍是素数)。 提示:这样的矩阵有很多。
246 0