码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ 24 素数距离问题

时间:2015-08-30 19:34:06      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:acm

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

using namespace std;

bool isPrime(int lhs)
{
	for (int i = 2; i <= sqrt(lhs); i++)
	{
		if (!(lhs % i))
			return false;
	}
	return true;
}

int main()
{
	int n, m,m1,m11,m2,m22,t1,t2,i;
	bool flag;
	cin >> n;
	while (n--)
	{
		cin >> m;
		m1 = m2 = m;
		m11 = m22 = 0;
		t1 = t2 = 0;
		
		if (1==m)
		{
			cout << 2 << " " << 1 << endl;
		}
		else
		{
			while (m1)
			{
				if (isPrime(m1))
				{
					m11 = m1;
					t1 = m - m11;
					break;
				}
				--m1;
			}

			while (m2)
			{
				if (isPrime(m2))
				{
					m22 = m2;
					t2 = m22 - m;
					break;
				}
				++m2;
			}

			if (t1 > t2)
				cout << m22 << " " << t2 << endl;
			else
				cout << m11 << " " << t1 << endl;
		}

	}

	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

NYOJ 24 素数距离问题

标签:acm

原文地址:http://blog.csdn.net/u011694809/article/details/48107351

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!