第一组代码过不了,求大佬解答

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

geray_king @ 2019-01-05 00:07:28

include<stdio.h>

include<stdbool.h>

include<math.h>

bool isprime(int x) {
for(int i=2;i<=sqrt(x);i++) if(x%i==0)return false; return true; } int main() {int n,l=0; scanf("%d",&n); int check[20000]={0},su[2265]; int cnt; for(int i=2;i<=20000;++i) {
if(!check[i]) { su[l++]=i; } for(int j=i;j<=20000;j+=i) { check[j]=1; }

} for(int i=0;su[i]<6661;i++) { for(int u=0;su[u]<6661;u++) { cnt=n-su[i]-su[u]; if(isprime(cnt)) {printf("%d %d %d",su[i],su[u],cnt); return 0; } } } return 0; }


by geray_king @ 2019-01-05 00:09:15

#include<stdio.h>
#include<stdbool.h>
#include<math.h>
bool isprime(int x)
{   
    for(int i=2;i<=sqrt(x);i++)
    if(x%i==0)return false;
    return true;
}
int main()
{int n,l=0;
scanf("%d",&n);
int check[20000]={0},su[2265];
int cnt;
for(int i=2;i<=20000;++i)
{   
    if(!check[i])
    {
     su[l++]=i;
    }
    for(int j=i;j<=20000;j+=i)
    {
        check[j]=1;
    }

} 
for(int i=0;su[i]<6661;i++)
{
    for(int u=0;su[u]<6661;u++)
    {
        cnt=n-su[i]-su[u];
        if(isprime(cnt))
        {printf("%d %d %d",su[i],su[u],cnt);
          return 0;
        }
    }
}
    return 0;
}

by geray_king @ 2019-01-05 00:09:35

@geray_king 不好意思,这是代码,第一次发帖不太懂


by geray_king @ 2019-01-05 00:10:33

@geray_king 2-10都过了,就第一过不了,如果把2从素数中移除#1过了,#4,#5,#8过不了,求解


by disangan233 @ 2019-01-05 08:07:22

@geray_king 自己回复自己可还行


by 星河·莫 @ 2019-01-05 08:08:57

@geray_king

能打注释吗?


by geray_king @ 2019-01-05 13:52:13

@星河·莫 好的,我再发一遍,不好意思。


by geray_king @ 2019-01-05 13:54:51

#include<stdio.h>
#include<stdbool.h>
#include<math.h>
bool isprime(int x)//判断是否是质数
{   
    for(int i=2;i<=sqrt(x);i++)
    if(x%i==0)return false;
    return true;
}
int main()
{int n,l=0;
scanf("%d",&n);
int check[20000]={0},su[2265];//2265为20000质数的个数
int cnt;
for(int i=2;i<=20000;++i)//这两个循环找出20000内的素数储存进su[]里面
{   
    if(!check[i])
    {
     su[l++]=i;
    }
    for(int j=i;j<=20000;j+=i)
    {
        check[j]=1;
    }

}
for(int i=0;su[i]<6661;i++)//选出第一个素数
{
    for(int u=0;su[u]<6661;u++)//选出第二个素数
    {
        cnt=n-su[i]-su[u];
        if(isprime(cnt))//判断减去两个素数之后的数是否为质数
        {printf("%d %d %d",su[i],su[u],cnt);
          return 0;
        }
    }
}
    return 0;
}

by geray_king @ 2019-01-05 13:55:34

@disangan233 因为不知道怎么修改帖子内容(手动滑稽


|