蒟蒻分享一下自己的思路,0ms过

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

wangshaojie100 @ 2017-09-16 00:55:22

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int sushu(int a)    判断是否是素数
{
    int n;
    if(a%2==0) return 0;
    for(n=3;n<(int)sqrt(a);n+=2)
     if(a%n==0) return 0;
     return 1;
}
int main(void)
{   int a[20000]={0};
int b[2500];
    int q,n,k,p=0,num;
    for(n=2;n<20000;n++)     运用埃氏筛生成0~20000质数表
    a[n]=1;
    for(n=2;n<143;n++)
    {
        for(k=2;k<=20000/n;k++)
            a[k*n]=0;
}
   for(n=0;n<20000;n++)
    if(a[n]!=0) b[p++]=n;
   cin>>num;
    for(q=0;q<p;q++)
        for(n=0;n<p;n++)                    判断时,先判断前两个数,第三个数用减法,可以确保最小
            if(sushu(num-b[n]-b[q])) {printf("%d %d %d",b[q],b[n],num-b[n]-b[q]); return 0;}
    return 0;
}

本蒟蒻第一次这么顺啊,最后那个减法的思路无意中想出来了,果然今天洛谷抽签大吉啊。。 thanks for watch


by 金镖十三娘 @ 2018-02-12 15:23:06

您可以交题解...

这样直接放代码对有些常看讨论的人来说不好Thank you


|