2016-11-15 2 views
-1

どうすればいいですか?これを書く方法はわかりません。特に、「次元」の意味を理解していないためです。いくつかの助けに大いに感謝します。数字の無限スパイラル:近隣の印刷

自然数は、スパイラルの中心を占める正方形のらせん状に配置されていると考えてください。そのスパイラルの中心的な11×11サブセットを下の表に示します。

111 112 113 114 115 116 117 118 119 120 121 
110 73 74 75 76 77 78 79 80 81 82 
109 72 43 44 45 46 47 48 49 50 83 
108 71 42 21 22 23 24 25 26 51 84 
107 70 41 20 7 8 9 10 27 52 85 
106 69 40 19 6 1 2 11 28 53 86 
105 68 39 18 5 4 3 12 29 54 87 
104 67 38 17 16 15 14 13 30 55 88 
103 66 37 36 35 34 33 32 31 56 89 
102 65 64 63 62 61 60 59 58 57 90 
101 100 99 98 97 96 95 94 93 92 91 

このスパイラルには、いくつかの興味深い機能があります。南東の対角線にはいくつかの素数(3,13,31,57、および91)があります。南西対角線はそれに沿って素数(5,17,37)の濃度が弱い。

スパイラルを構築するには、中央に1を、右に2、その下に3、左に4などのように開始します。この課題の問題の一部は、渦巻きの大きさの渦巻きを埋めるための規則を理解することです。そのルールを設定したら、残りの課題を完了することができます。

あなたは、以下の情報をユーザーに要求されます:

は次元を入力します。57 は、螺旋状に番号を入力します。42

最初の行は、正方形のスパイラルの大きさを示しています。この番号は奇数でなければなりません。そうでない場合は、次に高い奇数になるように次元を選択します。 2番目の数値は、範囲1と次元の2乗にする必要があります。 2番目の数値がその範囲内にない場合は、エラーメッセージNumber not in Rangeを出力します。

2番目の数字の不規則数を3行に書きます。各行には1つの空白で区切られた3つの整数があります。二番目の数字は42た場合、これはあなたの出力のようになります。

72 43 44 
71 42 21 
70 41 20 

秒数が64た場合、これはあなたの出力のようになります。

、第2の数が上にあった場合はどう
66 37 36 
65 64 63 
100 99 98 

螺旋の外側の端に印刷し、次にNumber on Outer Edgeを印刷します。

+0

、あなたは彼らが何を意味するのか割り当てを書いた人は誰でも求めることができますか? – khelwood

+0

ディメンションは正方形のサイズを意味するように見えるので、指定されたディメンションが57の場合、57 x 57平方根を使用します。そのため、2番目の数値は1と2の間になければなりません。それは、中央に単一の数字があるので、奇妙でなければならない。 – TallChuck

答えて

0

は、あなたがあなたがする必要があると思うものによって段階的にそれを破壊してみてください。

 1) scan 2d array for your number 
     2) do algorithm to print spiral 
      -print x numbers on row -1, print x numbers on row + 1 
      -print y numbers on col -1, print y numbers on col + 1 
     3) then start checking for special cases, like if number was in outer edge