Sylar @ 2016-08-15 21:29:55
#include<iostream>
#include<cmath>
using namespace std;
bool wtf(int x)
{
for(int i=2;i<=ceil(sqrt(x));i++)
{
if(x%i==0) return(false);
}
return(true);
}
int main()
{
int n;
cin>>n;
for(int i=2;i<=n;i++)
{
if(wtf(i)==true)
{
for(int j=i;j<=n-i-2;j++)
if((wtf(j)==true)&&(wtf(n-i-j)==true)&&((n-i-j)>=j))
{
cout<<i<<" "<<j<<" "<<n-i-j;
return 0;
}
}
}
}
by 劲舞飞扬20060421 @ 2016-08-21 21:01:59
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
using namespace std;
bool ss(int i)//判断素数
{
int x=2;
while(x<=floor(sqrt(i))&&i%x!=0)
x++;
if(x>sqrt(i))
return 1;
return 0;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n-4;i++)//枚举
if(ss(i))//若不为素数,则继续寻找
for(int j=i;i+j<=n-2;j++)//保证n-i-j>=2
if(ss(j))
if(ss(n-j-i))
{
printf("%d %d %d\n",i,j,n-j-i);//输出
return 0;
}
return 0;
}
by sun坠坠 @ 2016-09-28 21:12:00
可能是偶数
没事的反正才20000不怕超时
by ztz_cpp @ 2016-11-05 19:12:29
4,5,8中,2也包含在里面。
比如说15,结果是2 2 11。
而你的程序输出3 5 7。
明显不对
而我前几次也wa在这上面。
附上ac代码:
```cpp
#include<iostream>
using namespace std;
bool zs(int x){
if(x==2)
return 1;
if(x<2 || x%2==0)return 0;
for(int i=3;i*i<=x;i+=2)
if(x%i==0)return 0;
return 1;
}
int main(){
int i,j,x,n;
cin>>n;
if(n%2==0)
return 0;
for(i=2;i<n-4;i++)
for(j=2;j<n-4;j++){
x=n-i-j;
if(zs(i) && zs(j) && zs(x)){
cout<<i<<" "<<j<<" "<<x;
return 0;
}
}
return 0;
}