为什么只能得90

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

Wu_while @ 2019-12-15 10:29:45

求助大佬,90分

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int zs(int n)
{
    bool b=1;
    for(int i=2;i<sqrt(n);i++)
    {
        if(n%i==0)
        {
            return 1;
        }
    }
    return 0;
}
int main()
{
    int n,k;
    cin>>n;
    for(int i=2;i<=n-4;i++)
    {
        if(zs(i)) continue;
        for(int j=2;j<=n-4;j++)
        {
            if(zs(j)) continue;
            k=n-i-j;
            if(zs(k)) continue;
                if(i+j+k==n)
                {
                    cout<<i<<" "<<j<<" "<<k<<endl;
                    return 0;
                }
        }
    }   
    return 0;
}

哪里错了


by xQAQyn @ 2019-12-15 10:43:00

质数判定写错了


by LinkCutTree @ 2019-12-15 10:50:13

@吴宗阳 指数判定里面 i<sqrt(n) 改成 i<=sqrt(n)。另外特判0,1.


|