- 不用枚举第三个变量,因为它和前两个变量之和为定值,不需要自己增加复杂度
- 出错是因为粗心,没有发现循环中使用的是2009而不是n
#include<iostream>
using namespace std;
bool isprime(int n)
{
if(n==1)return 0;
for(int i = 2;i*i <= n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int n;cin >> n;
for(int i = 2;i < n;i++)
for(int j = i;j < n-i;j++)
{
if(isprime(i)&&isprime(j)&&isprime(n-i-j))
{
cout << i <<" " << j << " " << n-i-j;
return 0;
}
}
}