Niko @ 2017-07-10 15:44:48
#include<cstdio>
#include<cmath>
using namespace std;
int n;
bool a[40006];
int num_prime=0, prime[40006];
void init()
{
scanf("%d",&n);
a[0]=a[1]=1;
for(int i=2;i<=n;i++)
{
if(!a[i])
prime[num_prime++]=i;
for(int j=0;j<num_prime&&i*prime[j]<=n;j++)
{
a[i*prime[j]]=1;
if(!(i%prime[j]))
break;
}
}
}
void solve(int x)
{
int i=0,j=0;
while(prime[i]<x)
{
int tmp=x-prime[i];
j=0;
while(prime[j]<tmp)
{
int ttmp=tmp-prime[j];
if(!a[ttmp])
{
printf("%d %d %d\n",prime[i],prime[j],ttmp);
return;
}
j++;
}
i++;
}
}
int main()
{
init();
solve(n);
return 0;
}
by Niko @ 2017-07-10 19:24:36
sos
by geek痕 @ 2017-07-20 00:29:26
我刚才就遇到了,不过是因为freopen没有注释掉
by 皮某 @ 2017-08-01 17:56:29
可能情况
1 数组越界
2 炸空间
3 程序中存在“\n”(评测机的换行有时候不是“\n”)
4 指针的空间可能是8
......