1.题目描述
链接
https://www.nowcoder.com/questionTerminal/f8538f9ae3f1484fb137789dec6eedb9?toCommentId=289324
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
输入描述: 输入一个偶数
输出描述: 输出两个素数
2.思路解析
- 先写一个判断是不是素数的函数
- 循环输入n值
- i值从n的一半开始,这里–操作
- n-i 相当于++操作,然后同时判断是不是素数
- 是的话就直接打印,退出
- 不是就继续循环
3.代码实现
#include <iostream>
#include <cmath>
using namespace std;
// 判断是不是素数
bool Prime(int n)
{
int i = 2;
for(i; i <= sqrt(n); i++)
{
if(n % i == 0)
return false;
}
if(i > sqrt(n))
return true;
}
int main()
{
int n = 0;
// 循环输入
while(cin >> n)
{
// 这里i + (n - i) 正好等于n,所以直接判断同时是不是素数,是的话那就直接打印
// 因为两个数相加等于n值,只要判断是不是素数即可
for(int i = n / 2; i >= 2; i--)
{
if(Prime(i) && Prime(n - i))
{
// 打印
cout << i << endl << n - i<< endl;
break;
}
}
}
return 0;
}