别人的复杂度都是n方,我的比他们小,为什么会80?

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

AshidaMana @ 2016-04-03 12:01:58

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int prime(int);
    int n,a[10000]={0};
    cin>>n;
    for(int i=2,j=1;i<=n;i++)
        if(prime(i))
        {a[j]=i;j++;}
    int i,j,k=1;
    for(i=1;a[i]!=0;i++)
    {
        for(j=1;a[j]!=0;j++)
            if(prime(n-a[i]-a[j]))
            {cout<<a[i]<<' '<<a[j]<<' '<<n-a[i]-a[j];
                k=0;break;}
        if(k==0)
            break;
    }
    return 0;
}
int prime(int x)
{
if(x==0||x==1)
return 0;
if(x==2)
return 1;
    for (int i=2;i<=sqrt(x)+1;i++) {
        if(x%i==0)
            return 0;
    }
    return 1;
}

by cx0627 @ 2016-04-03 16:42:29

因为你wa了


by Hyle33ies @ 2016-04-03 16:57:50

时间复杂度小不一定正确


by AshidaMana @ 2016-04-03 16:59:19

那为什么会错啊?


by I_am_匿名用户 @ 2016-08-04 17:45:55

额 WA


by The_heir__Of_rome @ 2024-12-07 17:27:13

虽然9年后回复别人很奇怪

但是j需要大于等于i

输出格式 仅有一行,输出 3 个质数,这 3 个质数之和等于输入的奇数。相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。如果表示方法不唯一,请输出第一个质数最小的方案,如果第一个质数最小的方案不唯一,请输出第一个质数最小的同时,第二个质数最小的方案。


|