您的位置:首页 > 编程语言 > C语言/C++

c/c++素数距离问题

2015-11-14 15:32 274 查看


素数距离问题

时间限制: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 <iostream>
using namespace std;
int prime(int n)
{
int i,k=1;
if(n==2)return 1;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{ k=0;
break;}
}
if(k==1)
return 1;
if(k==0)
return 0;
}
int main()
{
int n,x,i,j;
cin>>n;
while(n--)
{
cin>>x;
if(x==1)
{
i=1;
cout<<++x<<' '<<i<<endl;
continue;
}
if(prime(x)==1)
cout<<x<<' '<<0<<endl;
else
{
for(i=1;i<5;i++)
{if(prime(x-i)==1)
break;}
for(j=1;j<5;j++)
{if(prime(x+j)==1)
break;}
if(i<=j)
cout<<x-i<<" "<<i<<endl;
else
cout<<x+j<<" "<<j<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: