麻烦看下我的思路哪里不对

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

冰凌之风 @ 2017-08-09 17:10:45

#include<stdio.h>
#include<stdlib.h>
int n[3600];//存放质数 
int main(){
    int num,i,j,x,y,k=0,sum1;//sum1为最大的质数,num为奇数; 
    int min=0;//用作最后两个质数的取值判断 
    scanf("%d",&num);
    n[0]=2;//由于质数从3开始储存,应该储存2 
    for(i=3,x=1;i<num+60;i++){//找出小于该奇数的所有质数 
         for(j=0;j<=min;j++){
            if(i%n[j]==0){k=1;break;
            }
        }
        if(k!=1){
        n[x]=i;
        k=0;
        x++;
        min++; 
        k=0;
        }
        else k=0;
    }
    k=0;//k后续要用,清零 
    for(i=0;i<=min;i++){//找出最大质数,但这个质数与原奇数的差不能小于4 
        if(num-n[i+1]<4){
            sum1=n[i];
            num=num-n[i];//将奇数减去该质数 
            break;
        }
    }
    for(x=0;x<min;x++){
        for(y=0;y<min;y++){
            if(n[x]+n[y]==num&&x<=y){
                k=1;
                i=x;
                j=y;
                break;
            }
        }
        if(k==1)break;
    } 
    printf("%d %d %d\n",n[i],n[j],sum1);
    system("pause");
    return 0;
} 
谢谢你们

|