hjh_cpp @ 2016-01-23 18:31:10
自己测试了很多遍都是有结果的
但是放到评测机上就有7个测试点无输出
[codec ]
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
int main()
{
list<int> num;
num.push_back(2);
for(int i=3;i<2000;i+=2)
{
for(int j=2;i%j!=0;j++)
{
if(j*j>i)
{
num.push_back(i);
break;
}
}
}
int n;
cin>>n;
for(list<int>::iterator i=num.begin();i!=num.end();i++)
{
for(list<int>::iterator j=num.begin();j!=num.end();j++)
{
if(find(num.begin(),num.end(),n-*i-*j)!=num.end())
{
cout<<*i<<' '<<*j<<' '<<n-*i-*j;
i=num.end();
j=num.end();
i--;
j--;
}
}
}
return 0;
}
[/codec ]
by LRM123 @ 2016-02-02 21:07:36
我的PASCAL也许能帮你:
var
i1,i2,n:longint;
function zs(n:longint):boolean;
var
i:longint;
begin
if (n<>2)and(n mod 2=0) then exit(false);
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit(false);
exit(true);
end;
begin
readln(n);
for i1:=2 to trunc(sqrt(n)) do
for i2:=2 to (n-i1) do
if zs(i1) then
if zs(i2) then
if zs(n-i1-i2) then
begin
writeln(i1,' ',i2,' ',n-i1-i2);
halt;
end;
end.