HDU 1262(寻找素数对)

基础题,暴力搜索即可。首先求出10000以内的所有素数,然后遍历所有素数对,找出和为给定的偶数,且差值最小的素数对。(注意两个素数可以相等)

#include <iostream>
using namespace std;
const int MAXM = 10005;
 
int prime[MAXM]; //10000以内的所有素数
 
//判断x是否为素数
bool isPrime(int x)
{
	if (x == 1)
		return false;
	for (int i = 2; i <= x / 2; i++)
	{
		if (x % i == 0)
			return false;
	}
	return true;
}
 
int main()
{
	int num = 0;
	for (int i = 1; i < MAXM; i++) //填充10000以内的素数
	{
		if (isPrime(i))
			prime[num++] = i;
	}
 
	int M;
	while (cin >> M)
	{
		int A, B; //两个素数
		int minDif = M; //最小差值
		for (int i = 0; i < num; i++) //暴力搜索
		{
			for (int j = i; j < num; j++)
			{
				if (prime[i] + prime[j] == M && prime[j] - prime[i] < minDif)
				{
					A = prime[i];
					B = prime[j];
					minDif = prime[j] - prime[i];
				}
			}
		}
		cout << A << " " << B << endl;
	}
	return 0;
}

继续加油。

发布了206 篇原创文章 · 获赞 1 · 访问量 9001

猜你喜欢

转载自blog.csdn.net/Intelligence1028/article/details/104784128