【题目链接】
【题目考点】
1. 质数
【解题思路】
遍历6~100的每个偶数i,针对每个数字i:
遍历2~i/2的每个数字j,如果j与i-j是都为质数,那么说明将偶数i拆分成了两个质数j与i-j的加和,输出结果。
(j没必要遍历大于i/2的数字,因为当j > i/2时,i-j < i/2,这种一个数大于i/2一个数小于i/2的情况一定已经在j < i/2时遇到过了)
【题解代码】
解法1:
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n)//判断大于等于2的n是否是质数
{
for(int i = 2; i <= sqrt(n); ++i)
if(n % i == 0)
return false;
return true;
}
int main()
{
for(int i = 6; i <= 100; i += 2)//遍历6~100的每个偶数
{
for(int j = 2; j <= i/2; ++j)
{
if(isPrime(j) && isPrime(i-j))
{
cout << i << '=' << j << '+' << i - j << endl;
break;
}
}
}
return 0;
}