チャレンジ
このタスクでは、整数Nが与えられます。整数に最も近い素数を出力する必要があります。
数値が素数の場合は、数値を出力します。
入力Nは1行で指定され、入力はEOFで終了します。入力の数は10000の値を超えません。
課題は、最速のソリューションを実装して、最大10000の値を可能な限り速く処理できるようにすることです。
入力
 299246598
 211571591
 71266182
 645367642
 924278231
出力
 299246587
 211571573
 71266183
 645367673
 924278233
制約
- Nが2 ^ 64未満
- ソリューションでは、指が4096バイトを超えないように注意してください。
- 素数のための組み込みのものを使用していない限り、任意の言語を使用できます。
- 最速のソリューション、最も効率的な時間の複雑さの勝利
追加:
これは、同じ問題の簡単なバージョン(N <2 ^ 31)なので、実際の問題を解決する前に、小さなケースでアプローチを確認してみてください。
                
                2
              
                  あなたが要求している基本的な計算は、ほんの数日前のcodegolf.stackexchange.com/q/1977/78のサブパートでした。個人的に(つまり、モデレーターの帽子をかぶっていない)、そのような繰り返しは退屈だと思います。
                
                
                  
                    —
                    dmckee ---元モデレーターの子猫
                    
                  
                
              
                  確率的素数検定を使用できますか?
                
                
                  
                    —
                    キースランドール
                    
                  
                
              
                  どのように最速で審査する予定ですか?固定ハードウェアでの実行速度によって?または提出の複雑さを分析することによって?どういうわけか、異なる言語での運用コストを正規化しますか?-最後に、この課題は簡単すぎるようです。ここには革新の余地は本当にありません。
                
                
                  
                    —
                    MtnViewMark 2011 
                    
                  
                
              
                  @gnibbler:すべての2 ^ 64値のルックアップテーブルを使用すると、4096バイトウィンドウ全体(ソリューション)を
                
                
                  
                    —
                    絞り込める
                    
                  
                
              
                  @Debanjan、時間の複雑さを述べる際の一般化されたリーマン仮説を仮定できるでしょうか?
                
                
                  
                    —
                    Peter Taylor、