shijunfeng00 @ 2017-03-02 17:59:53
#include<iostream>
#include<cmath>
int a[30000]={0},b[30000]={0};
using namespace std;
int main()
{
int n,m=0;
cin>>n;
for(int i=2;i<sqrt(n);i++)
for(int j=2;i*j<=n;j++)
a[i*j]=1;
for(int i=2;i<n;i++)
if(!a[i])b[m++]=i; //m为不大于n的质数个数
for(int i=0;i<m;i++)
for(int j=0;j<m;j++)
for(int k=0;k<m;k++)
if(b[i]+b[j]+b[k]==n)
{
printf("%d %d %d",b[i],b[j],b[k]);
return 0;
}
}
by wx33 @ 2017-03-03 20:39:31
你这个筛法实在是太naive了,就不能写个线性筛吗?
by Tyrone @ 2017-03-23 22:18:07
bu neng
by 我爱编程 @ 2017-04-05 21:23:07
你可以去发题解呀
by tuliwei @ 2017-04-20 12:53:39
呵