标签:升级 clu 输出 tin sqrt span 质数 out cin
题解:
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int a[20000]={0};
int i,j;
for(i=4;i<20000;i+=2){
a[i]=1;
}
for(i=3;i<sqrt(20000);i+=2){
for(j=i+2;j<20000;j+=2){
if(a[j]==0&&j%i==0){
a[j]=1;
}
}
}
// {
// for(i=2;i<1000;i++){
// if(a[i]==0){
// printf("%d ",i);
// }
// }
// }
int ret=0,p[10000];
for(i=2;i<20000;i++){
if(a[i]==0){
p[ret++]=i;
}
}
int k;
for(i=0;i<ret;i++){
for(j=0;j<ret;j++){
for(k=0;k<ret;k++){
if(p[i]+p[j]+p[k]==n){
printf("%d %d %d",p[i],p[j],p[k]);
goto out;
}
}
}
}
out:
return 0;
}
看到的一个较好的题解:
int main()
{
cin>>a;//读入
for (n1=2;n1<=a-4;n1++)//进入循环,寻找合适的数。
for (n2=2;n2<=a-4;n2++)//为了节省时间,只设置两层循环。
{
n3=a-n1-n2;//用前两个数求出第三个数。
if (zs(n1)+zs(n2)+zs(n3)!=0)//判断三数是否均为质数,否则直接跳过。
continue;
cout<<n1<<‘ ‘<<n2<<‘ ‘<<n3;//输出
return 0;
}
}
标签:升级 clu 输出 tin sqrt span 质数 out cin
原文地址:https://www.cnblogs.com/lijiahui-123/p/12247894.html