每日一题 3.26.2
每日一题3.26.2
查找组成一个偶数最接近的两个素数
解题思路: 先判断输入的数是否为大于2的偶数,然后将输入的n折半为k,判断k和n-k是否均为素数,如果不是,就将k++,直到找到k和n-k都是素数时,输出k和n-k就是差值最小的素数对。
代码实现:
#include <iostream>
using namespace std;
int isPrime(int n)
{
for (int i = 2; i*i <= n; i++)
{
if (n%i == 0)
return 0;
}
return 1;
}
int main()
{
int n;
while (cin >> n)
{
if (n <= 2)
break;
if ((n > 2) && (n % 2 == 0))
{
int k = n / 2;
if (isPrime(k) == 1 && isPrime(n-k)==1)
{
cout << k << endl;
cout << n - k << endl;
}
while(isPrime(k) == 0 || isPrime(n-k)==0)
{
k++;
if (isPrime(k) == 1 && isPrime(n - k) == 1)
{
cout << n-k << endl;
cout << k << endl;
}
}
}
}
return 0;
}
参考答案: