第七个和第十个点会错?求神犇帮忙

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

_无v名_ @ 2017-08-22 17:19:46

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
int n;
int a[4];
bool c(int x)
{
    if(x==1||x==0) return false;
    for(int i=2;i<=round(sqrt(x));i++)
    if(x%i==0) return false;
    return true;
}
void search(int x)
{
    if(x==3)
    {
        a[3]=n-a[1]-a[2];
        if(c(a[3]))
        {cout<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;exit(0);}
    }
    else
    for(int i=2;i<=n;i++)
    {
        if(c(i))
        {
            a[x]=i;search(x+1);
        }
    }
}
int main()
{
    cin>>n;
    search(1);
    return 0;
}

by 起名真的很难 @ 2017-08-22 22:56:25

bool c(int x)
{
    if(x==1||x==0) return false;
    for(int i=2;i<=round(sqrt(x));i++)
    if(x%i==0) return false;
    return true;
}

这一段有点复杂了,但我估计不是这段的问题

bool c(int n)
{
    for(int i=2;i<=floor(sqrt(n));i++)
    if(!(n%i))return false;
    return true;
}

by 起名真的很难 @ 2017-08-22 22:57:13

干脆给你个简单的代码吧

#include<bits/stdc++.h>
using namespace std;
int n;
int prime(int n)
{
    for(int i=2;i<=sqrt(n);i++)
    if(!(n%i))return 0;
    return 1;
}
int main()
{
    scanf("%d",&n);
    for(int i=2;i<=n/3;i++)
        for(int j=i;j<=n/3;j++)
            if(prime(i)&&prime(j)&&prime(n-i-j))
            {printf("%d %d %d",i,j,n-i-j);return 0;}
}

|