rfsfreffr @ 2019-05-16 20:31:59
#include <bits/stdc++.h>
using namespace std;
int a[2300],n,f=0;
void ff(int x){
for(int i=2; i<=sqrt(x); i++){
if(x%i==0) return ;
}
a[++f]=x;
return ;
}
int main() {
a[++f]=2;
for(int i=3; i<=20000; i++){
ff(i);
}
cin>>n;
for(int i=1; i<=f; i++){
for(int j=1; j<=f; j++){
int last=n-a[i]-a[j],t=1;
if(last<0) break;
for(int k=2; k<=sqrt(last); k++){
if(last%k==0) t=0;
}
if(t==1) {
cout<<a[i]<<" "<<a[j]<<" "<<last<<endl;
exit(0);
}
}
}
}
by rfsfreffr @ 2019-05-16 20:32:12
help
by fzfnf @ 2019-05-16 20:40:43
@Roll_SKY_da_shen 仅有一行,输出3个质数,这3个质数之和等于输入的奇数。相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。 如果表示方法不唯一,请输出第一个质数最小的方案,如果第一个质数最小的方案不唯一,请输出第一个质数最小的同时,第二个质数最小的方案。
by fzfnf @ 2019-05-16 20:41:39
@Roll_SKY_da_shen 这里a[j]肯能会<a[i]
by rfsfreffr @ 2019-05-16 20:43:19
@Bob大大 不是错这里啦,是if(last<0)应该写成if(last<=0) .已经AC