PAT 1007 素数对猜想 (20分) java题解

题目地址在此

在这里插入图片描述
输入格式:

输入在一行给出正整数N。

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

思路:先求出从1到N中所有的素数,将其存放在s_num数组中,再遍历数组,求出前后两个素数相减差为2个数的个数。

有错误:一处,不知道错在哪里,有看到的大佬希望可以评论说明一下,谢谢啦。

代码:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] s_num = new int[N];

        boolean sign ;
        int s = 0;

        for(int i=2;i<N;i++){
            if(i%2==0&&i!=2) continue;
            sign = true;
            for(int j=2;j<=Math.sqrt(i);j++){
                if(i%j==0){
                    sign = false;
                    break;
                }
            }
            if(sign){
                s_num[s] = i;
                s++;
            }
        }                                     //把素数放进s_num

        int sum = 0;

        for(int i=0;i<s_num.length-1;i++){
            if(s_num[i+1]-s_num[i]==2){
                sum++;
            }
        }


        System.out.print(sum);
    }
}

附运行截图:
在这里插入图片描述
—————————————分割线————————————————
5.13订正
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章