zl程序教程

您现在的位置是:首页 >  其它

当前栏目

找最近的素数会出现问题

出现 最近 素数 问题
2023-09-27 14:27:29 时间

问题:


描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,
并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
 如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),输出每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。样例输入3
6
8
10
样例输出5 1
7 1
11

代码:



#include <iostream>
using namespace std;


bool testsu(int n)
{
	int i;
	int flag=0;
	if(n==2||n==1)
	return true;
	else
	{
	for(i=2;i<n;i++)
	{
		if(n%i==0)
		{
			flag=1;//置为true
			break;
		}
	}
	if(flag==0)//如果是真的
	return true;
	else
    return false;
	}


}

int main() {
	int n;
	int m;
	cin>>m;
	while(m--)
	{ 	int i=0;
		cin>>n;
		if(testsu(n))
		{
		cout<<n<<" "<<i<<endl;
		continue;
		}
	     else
	   {

	    while(i++)//这个循环试判断最近素数取值的,找到就跳出
	    {
			if(testsu(n-i))//从第n-1个开始
			{
			cout<<n-i<<" "<<i<<endl;
			break;
			}
			else if(testsu(n+i))
			{
			cout<<n+i<<" "<<i<<endl;
			break;
			}
	    }

     }
	}
	return 0;
}