15
1000003で割り切れますか?簡単です。最後の桁に300001を掛けて加算するだけです!
Pより大きい素数が与えられた場合10、プログラムまたは関数xは、素数の最後の桁を乗算して元の残りに加算したときに元の素数の倍数を生成する最小絶対値を持つ整数として定義されるその分割可能性ルールを把握する必要がありますプライム。 例 入力が与えられる31と、最後の数字はで1あり、残りの数字は3です。したがって、プログラムは、の倍数であるxような最小絶対値を持つ整数を見つける必要があります。この場合、機能するため、プログラムまたは関数はを返します。1*x + 331x=-3-3 入力が与えられる1000003と、最後の数字はで3あり、残りの数字は100000です。したがって、プログラムはの倍数であるx=300001ため3*300001+100000 = 1000003、見つけるでしょう1000003。 数学的背景 の値はx、可分性テストとして使用できます。数がいる場合Nで割り切れるP、その後、追加xの回の最後の桁Nの残りの部分にはN、複数の得られますPし、場合にのみがあればNで割り切れるP最初の場所でします。 ためにP=11、我々が得るx=-1ために、よく知られた整除ルールに相当する、11数はで割り切れる:11その桁の交互の違いで割り切れます11。 ルール 出力は、出力の符号と値の両方を明確にエンコードする任意の形式にすることができます。 入力素数は10〜2 ^ 30の間です。 入力が素数でない場合や範囲内にない場合は処理する必要はありません。 あなたは、両方の場合はハンドルに必要としないxと-x有効な出力(起こるべきではありません)です。 ブルートフォースは許可されますが、より創造的なソリューションが評価されます。 これはcode-golfなので、各言語で最も短いコードが勝ちです!ゴルフ言語での回答が他の言語での投稿を妨げないようにしてください。 テストケース Input Output 11 -1 13 4 17 -5 19 2 23 7 29 3 31 -3 37 -11 41 -4 43 13 47 -14 53 16 59 6 61 …