結果

問題 No.713 素数の和
ユーザー Pump0129Pump0129
提出日時 2018-07-17 13:38:22
言語 Java21
(openjdk 21)
結果
AC  
実行時間 145 ms / 2,000 ms
コード長 1,173 bytes
コンパイル時間 2,618 ms
コンパイル使用メモリ 76,224 KB
実行使用メモリ 41,508 KB
最終ジャッジ日時 2024-05-03 18:35:18
合計ジャッジ時間 4,338 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 145 ms
41,080 KB
testcase_01 AC 113 ms
41,508 KB
testcase_02 AC 115 ms
41,120 KB
testcase_03 AC 132 ms
41,084 KB
testcase_04 AC 135 ms
40,372 KB
testcase_05 AC 115 ms
40,284 KB
testcase_06 AC 118 ms
41,080 KB
testcase_07 AC 123 ms
41,212 KB
testcase_08 AC 124 ms
41,080 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

package net.ipipip0129.yukicoder.no713;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = Integer.parseInt(scan.nextLine());
        if (num == 1) {
            System.out.println(0);
            return;
        }
        int sqrt_num = ((int)Math.sqrt(num)) + 1;
        List<Integer> num_list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            num_list.add(i + 1);
        }
        int pt = 1;
        //エラトステネスの篩
        while (true) {
            int pt_num = num_list.get(pt);
            if (sqrt_num <= pt_num) {
                break;
            }
            for(int i = pt_num * 2; i <= num; i += pt_num) {
                if (num_list.indexOf(i) != -1) {
                    num_list.remove(num_list.indexOf(i));
                }
            }
            pt++;
        }
        int add_num = 0;
        for (int ans_num : num_list) {
            add_num += ans_num;
        }
        System.out.println(add_num - 1);
    }
}
0