码迷,mamicode.com
首页 > 其他好文 > 详细

P1579 哥德巴赫猜想(升级版)

时间:2020-02-01 13:01:52      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:升级   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;
             }
}

P1579 哥德巴赫猜想(升级版)

标签:升级   clu   输出   tin   sqrt   span   质数   out   cin   

原文地址:https://www.cnblogs.com/lijiahui-123/p/12247894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!