結果

問題 No.371 ぼく悪いプライムじゃないよ
ユーザー tenten
提出日時 2021-01-26 16:09:12
言語 Java
(openjdk 23)
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,230 bytes
コンパイル時間 2,821 ms
コンパイル使用メモリ 80,776 KB
実行使用メモリ 55,556 KB
最終ジャッジ日時 2025-03-28 20:18:07
合計ジャッジ時間 15,360 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 41 TLE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long low = sc.nextLong();
        long high = sc.nextLong();
        long p = (long)Math.sqrt(high);
        boolean[] isNotPrime = new boolean[(int)p + 1];
        ArrayList<Integer> primes = new ArrayList<>();
        for (int i = 2; i < isNotPrime.length; i++) {
            if (!isNotPrime[i]) {
                primes.add(i);
                for (int j = 2; j * i < isNotPrime.length; j++) {
                    isNotPrime[j * i] = true;
                }
            }
        }
        for (int i = primes.size() - 1; i >= 0; i--) {
            int ans = primes.get(i);
            long out = 0;
            for (long j = (low + ans - 1) / ans; j * ans <= high; j++) {
                boolean notDivide = true;
                for (int k = 0; k < i && notDivide; k++) {
                    notDivide = (j % primes.get(k) != 0);
                }
                if (notDivide) {
                    out = Math.max(out, ans * j);
                }
            }
            if (out > 0) {
                System.out.println(out);
                return;
            }
        }
    }
}
0