哥德巴赫猜想: 任何一个大于2的偶数都可以拆分为两个素数的和

在学堂在线上遇到的一道编程题,这里最容易犯的错误就是,认为6=3+3不算,这样的结果就只有90分。

在此仅作提醒,免得大


class chose{
    int[] check_sushu(int n){
        int[]num=new int[n];
        //所有的偶数都不为素数
        for(int i=3;i<n;i+=2)num[i]=1;
        num[2]=1;
        //所有的能被<=sqrt()整除的数,均不为素数
        for(int i=3;i<n;i++)
        {
            if(num[i]==1){
                for(int j=2;j<=Math.sqrt(i)+1;j++)
                    if(i%j==0){num[i]=0;break;}
                if(num[i]==1){
                    for(int k=2*i;k<n;k+=i)num[k]=0;
                }
            }
        }
        int[]num_sushu=new int[num.length];
        int count=0;
        for(int i=0;i<num.length;i++){
            if(num[i]==1)num_sushu[count++]=i;
        }
        int[]number=new int[count];
        for(int i=0;i<count;i++)number[i]=num_sushu[i];
        return number;
    }
}

public class Main{
    //利用筛选法获取素数
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        chose a=new chose();
        int []num=a.check_sushu(n);
//        for(int i:num)System.out.println(i);
        for(int i=0;i<num.length;i++)
            for(int j=i;j<num.length;j++)
                if(num[i]+num[j]==n)System.out.println(n+"="+num[i]+"+"+num[j]);
    }
}

家纠结。。。

猜你喜欢

转载自blog.csdn.net/hgtjcxy/article/details/81408068