結果
| 問題 | 
                            No.192 合成数
                             | 
                    
| コンテスト | |
| ユーザー | 
                             fal_rnd
                         | 
                    
| 提出日時 | 2017-04-03 19:05:46 | 
| 言語 | Java  (openjdk 23)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 138 ms / 2,000 ms | 
| コード長 | 911 bytes | 
| コンパイル時間 | 2,071 ms | 
| コンパイル使用メモリ | 77,448 KB | 
| 実行使用メモリ | 54,532 KB | 
| 最終ジャッジ日時 | 2024-06-27 02:10:16 | 
| 合計ジャッジ時間 | 6,816 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 25 | 
ソースコード
import java.util.BitSet;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Main{
	static final Scanner s=new Scanner(System.in);
	public static void main(String args[]){
		int n=Math.max(s.nextInt()-101,3),res;
		PrimeIterator pri = new PrimeIterator(n+100);
		while((res=pri.next())<n);
		System.out.println(res+1);
	}
}
class PrimeIterator{
	private BitSet	bitSet;
	private int		nextV;
	private int		limit;
	public PrimeIterator(int limit){
		this.limit=limit;
		bitSet=new BitSet(limit+1);
		reset();
	}
	public boolean hasNext(){
		return nextV>=0;
	}
	public int next(){
		if(!hasNext())
			throw new NoSuchElementException();
		int r=nextV;
		for(int i=0; i<bitSet.size(); i+=nextV)
			bitSet.set(i);
		nextV=bitSet.nextClearBit(0);
		if(nextV>limit) nextV=-1;
		return r;
	}
	public void reset(){
		nextV=2;
		bitSet.clear();
		bitSet.set(0);
		bitSet.set(1);
	}
}
            
            
            
        
            
fal_rnd