チャレンジ
このタスクでは、整数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、