#4#5#8是啥,为啥过不了

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

Sylar @ 2016-08-15 21:29:55

#include<iostream>
#include<cmath>
using namespace std;
bool wtf(int x)
{
    for(int i=2;i<=ceil(sqrt(x));i++)
    {
        if(x%i==0) return(false);
    }
    return(true);
}
int main()
{
    int n;
    cin>>n;
    for(int i=2;i<=n;i++)
    {
        if(wtf(i)==true)
        {
            for(int j=i;j<=n-i-2;j++)
             if((wtf(j)==true)&&(wtf(n-i-j)==true)&&((n-i-j)>=j))
             {
                 cout<<i<<" "<<j<<" "<<n-i-j;
                return 0;
             }
        }
     } 
}

by 劲舞飞扬20060421 @ 2016-08-21 21:01:59

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
using namespace std;
bool ss(int i)//判断素数 
{
    int x=2;
    while(x<=floor(sqrt(i))&&i%x!=0)
        x++;
    if(x>sqrt(i))
        return 1;
    return 0;
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=2;i<=n-4;i++)//枚举 
        if(ss(i))//若不为素数,则继续寻找 
            for(int j=i;i+j<=n-2;j++)//保证n-i-j>=2 
                if(ss(j))
                    if(ss(n-j-i))
                        {
                            printf("%d %d %d\n",i,j,n-j-i);//输出 
                            return 0;
                        }
    return 0;
}

by sun坠坠 @ 2016-09-28 21:12:00

可能是偶数

没事的反正才20000不怕超时


by ztz_cpp @ 2016-11-05 19:12:29

4,5,8中,2也包含在里面。

比如说15,结果是2 2 11。

而你的程序输出3 5 7。

明显不对

而我前几次也wa在这上面。

附上ac代码:

```cpp
#include<iostream>
using namespace std;
bool zs(int x){
    if(x==2)
        return 1;
    if(x<2 || x%2==0)return 0;
    for(int i=3;i*i<=x;i+=2)
        if(x%i==0)return 0;
    return 1;
}
int main(){
    int i,j,x,n;
    cin>>n;
    if(n%2==0)
        return 0;
    for(i=2;i<n-4;i++)
        for(j=2;j<n-4;j++){
            x=n-i-j;
            if(zs(i) && zs(j) && zs(x)){
                cout<<i<<" "<<j<<" "<<x;
                return 0;
            }
        }
    return 0;
} 

|