PTA 1013 數素數 (詳解+代碼)

在這裏插入圖片描述
解析:這道題我的思路就是素數遍歷一遍存到集合中,在從M-N的順序遍歷一遍存着素數的集合。整體不難,難點在需要遍歷進集合的素數該有多少,題目給的是N>=10的4次方,這是素數集合裏的索引,所以我們要遍歷進集合的素數就應該更多,不然會有測試點4過不去。我也是嘗試很多次才確定這個值,有點坑。

public class Pta_1013 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int M = scanner.nextInt();
        int N = scanner.nextInt();
        List<Integer> list = new ArrayList<Integer>();
        List<Integer> list2 = new ArrayList<Integer>();
        //添加素數
        for (int i = 2; i < 120000 ; i++) {//素數範圍要更大一些
            if (isprime(i)) {
                list.add(i);
            }
        }
        for (int i = M-1; i <N; i++) {
            list2.add(list.get(i));
        }
        for(int i=1;i<=list2.size();i++){
            System.out.print(list2.get(i-1));
            if(i==list2.size()){
                break;
            }
            if(i%10!=0){
                    System.out.print(" ");

            }else{
                System.out.println();
            }

        }
    }

    static boolean isprime(int i) {
        for (int j = 2; j <= Math.sqrt(i); j++) {
            if (i % j == 0) {
                return false;
            }
        }
        return true;
    }
}
發佈了65 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章