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

Posted lijiahui-123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1579 哥德巴赫猜想(升级版)相关的知识,希望对你有一定的参考价值。

题解:

#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 哥德巴赫猜想(升级版)的主要内容,如果未能解决你的问题,请参考以下文章

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

洛谷P1579 哥德巴赫猜想(升级版)题解

洛谷P1579 哥德巴赫猜想(升级版)题解

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

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

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