30
この数は素数ですか?
信じられないかもしれませんが、単純な素数性テストのためのコードゴルフチャレンジはまだありません。特に「通常の」言語の場合、これは最も興味深い課題ではないかもしれませんが、多くの言語では自明ではありません。 Rosettaコードは、素性テストに対する慣用的なアプローチの言語ごとのリストを特徴としており、1つはMiller-Rabinテストを具体的に使用し、もう1つは試験部門を使用しています。ただし、「最も慣用的」は「最短」と一致しないことがよくあります。プログラミングパズルとコードゴルフをコードゴルフの人気サイトにするために、この課題では、「Hello、World!」と同様に、すべての言語での最短アプローチのカタログを作成しようとしています。そして、あなたのために素晴らしい馬をゴルフしましょう!。 さらに、素数性テストを実装する機能はプログラミング言語の定義の一部であるため、この課題は実証済みのプログラミング言語のディレクトリとしても機能します。 仕事 入力として厳密に正の整数nが与えられると、nが素数であるかどうかを判断し、それに応じて真実または偽の値を出力する完全なプログラムを作成します。 この課題のために、厳密に正の約数が2つだけある整数は素数です。これは、唯一の厳密に正の除数である1を除外することに注意してください。 アルゴリズムは決定論的である必要があり(つまり、確率1で正しい出力を生成する)、理論上、任意の大きな整数に対して機能する必要があります。実際には、プログラムが1〜255の整数で機能する限り、入力をデータ型に格納できると想定できます。 入力 言語がSTDINからの読み取り、コマンドライン引数またはユーザー入力の他の代替形式の受け入れが可能な場合、整数をその10進表現、単項表現(選択した文字を使用)、バイト配列(大きなまたはリトルエンディアン)またはシングルバイト(これがあなたの言語の最大のデータ型である場合)。 あなたの言語がどんな種類のユーザー入力も受け入れられない場合(そしてその場合のみ)、プログラムで入力をハードコードすることができます。 この場合、ハードコードされた整数は簡単に交換可能でなければなりません。特に、プログラム全体の1か所にしか表示されない場合があります。 スコアリングの目的で、入力1に対応するプログラムを送信します。 出力 出力はSTDOUTまたは最も近い代替に書き込まれる必要があります。 可能であれば、出力は真偽値または偽の値(またはその文字列表現)のみで構成され、必要に応じて単一の改行が続きます。 この規則の唯一の例外は、挨拶、ANSIカラーコード、インデントなど、抑制できない言語のインタープリターの一定の出力です。 追加のルール これは、プライムテストの最短アプローチで言語を見つけることではなく、すべての言語で最短アプローチを見つけることです。したがって、回答は承認済みとしてマークされません。 ほとんどの言語での提出物は、適切な既存のエンコーディングでバイト単位でスコアリングされます。通常は(必ずしもそうではありませんが)UTF-8です。 たとえば、言語Pietはコーデルでスコアリングされますが、これはこの言語の自然な選択です。 Foldersのような一部の言語は、スコア付けが少し難しいです。疑問がある場合は、Metaで質問してください。 通常のルールとは異なり、このチャレンジよりも新しい言語(または言語バージョン)を自由に使用できます。空のプログラムが素数性テストを実行する言語を作成することでこれを悪用したい場合は、非常に退屈な答えへの道を開くことを祝福します。 提出物をテストできるように、通訳が必要であることに注意してください。以前に実装されていない言語用にこのインタープリターを自分で作成することは許可されています(さらには推奨されています)。 選択した言語が、すでに回答を持っている別の(潜在的により人気のある)言語の些細なバリアントである場合(BASICまたはSQL方言、Unixシェル、またはHeadsecksやUnaryのような些細なBrainfuck派生語を考えてください)、既存の回答にメモを追加することを検討してください同じまたは非常に類似したソリューションは、他の言語でも最短です。 素数性をテストするための組み込み関数が許可されています。この課題は、各言語で可能な限り最短のソリューションをカタログ化することを目的としているため、言語の組み込みを使用する方が短い場合は、それを選択してください。 それらが以前に無効にされていない限り、http://meta.codegolf.stackexchange.com/q/1061を含む、すべての標準コードゴルフ規則が適用されます。 補足として、ゴルフにそれほど価値のない言語では、退屈な(しかし有効な)答えに投票しないでください。これらは、カタログを可能な限り完全にコンパイルしようとするので、この質問には依然として有用です。ただし、主に作成者がコードのゴルフに力を入れなければならない言語では、主に回答を支持してください。 カタログ この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 ## Perl, 43 + 2 (-p flag) …