時には、プログラムを作成するときに、何らかの理由で暗号化などの素数を使用する必要があります。場合によっては、合成番号も使用する必要があると思います。場合によっては、少なくともここPPCGでは、プログラムが任意の変更に対処できる必要があります。また、興味深いPPCGの質問を作成するために便利に考案された状況では、おそらくあなたが使用している数字でさえ、腐敗に耐えなければならない…
定義
複合番号は、それが1 Aを超える2つのより小さな整数の積、すなわち、素数でない整数≥4 bitflip性複合数次のように定義されています。あなたはそれを書くならば、それは、のための複合正の整数です可能な最小ビット数のバイナリでは、その数値から任意の1ビットまたは2ビットを変更できますが、その数値はまだ合成されています。
例
たとえば、数値84を考え1010100
ます。バイナリでは、それがです。以下は、それと2ビット以内に異なるすべての数値です。
0000100 4 2×2 0010000 16 4×4 0010100 20 4×5 0010101 21 3×7 0010110 22 2×11 0011100 28 4×7 0110100 52 4×13 1000000 64 8×8 1000100 68 4×17 1000101 69 3×23 1000110 70 7×10 1001100 76 4×19 1010000 80 8×10 1010001 81 9×9 1010010 82 2×41 1010100 84 7×12 1010101 85 5×17 1010110 86 2×43 1010111 87 3×29 1011000 88 8×11 1011100 92 4×23 1011101 93 3×31 1011110 94 2×47 1100100100 10×10 1110000 112 8×14 1110100116 4×29 1110101 117 9×13 1110110 118 2×59 1111100 124 4×31
最初の列は2進数の数値です。2番目の列は10進数の数値です。3列目が示すように、これらの数値はすべて合成されています。そのため、84はビットフリップ抵抗のある合成数です。
タスク
次の3つのプログラムまたは関数のうち、言語に最も適したもののいずれかを作成する必要があります。
- 入力として非負の整数nを取り、最初のn個のビットフリップ耐性合成数を出力するプログラムまたは関数。
- 非負整数かかるプログラムや関数、Nを入力として、および以下のすべてbitflip性複合数値を出力するn個(または未満、好むか等しい場合、N、すなわち、あなたがいるかどうかを選択することができ、N bitflip場合出力に含まれています-耐性)。
- 入力を受け取らず、すべてのビットフリップ耐性の合成数を出力するプログラムまたは関数。(これは、標準出力、遅延リスト、またはジェネレーターへの印刷など、プログラムの実行中に出力を生成できる出力メカニズムを使用する必要があります。リスト全体を計算してから印刷することはできません。)
テストケース
以下は、最初のいくつかのビットフリップ耐性合成数です。
84, 184, 246, 252, 324, 342, 424, 468, 588, 636, 664, 670, 712, 730, 934, 958
明確化
- ビットフリップに耐性を持たなければならないのは、あなたが作り出す数字だけです。これは、ビットフリップに耐性があるプログラムを作成することに関するタスクではありません。プログラム自体で好きな数字を使用してください。
- 出力する数値は、「先行ゼロ」のビットフリップに耐える必要はありません。数字は可能な限り最小のビット数で保存され、それらのビットのみが反転しないようにする必要があると想像してください。ただし、出力する数値の最初の1ビットは、ビットフリップの影響を受けないようにする必要があります。
- 適切な結果が得られる任意のアルゴリズムを使用してください。ここでは効率性についてマークされていません。
- ビットフリップ耐性のある合成数が有限数であることを証明できる場合は、a)出力形式の制限が解除され、b)リストのハードコーディングが許可されます(ただし、単に計算するよりも冗長になります)。この規則は、ほとんど完全性のためです。関連性があるとは思わない。
勝利条件
これはcode-golfなので、いつものように、短いほうが良いです。また、通常どおり、プログラムの長さはバイト単位で測定されます。
n
場合n
bitflip耐性でありますか?(つまり、「n以下」にしますか?)