回答編集履歴
2
誤記訂正
answer
CHANGED
@@ -25,6 +25,6 @@
|
|
25
25
|
|
26
26
|
k(奇数)より1小さい偶数をeとすると
|
27
27
|
`k ** 2 == (e + 1) ** 2 == e ** 2 + 2 * e + 1`
|
28
|
-
eは偶数なので`e ** 2`は偶数、`2 *
|
28
|
+
eは偶数なので`e ** 2`は偶数、`2 * e`も偶数。よって`e ** 2 + e * 2`は必ず4の倍数になる。
|
29
29
|
つまりkが奇数の時、`k ** 2`のLSB(下位1ビット)は必ず1で、LSBの一つ上の桁のビットは必ず0になる。
|
30
30
|
故に`(k ** 2 - 1) / 4 == k ** 2 >> 2`と同じとなる
|
1
訂正
answer
CHANGED
@@ -18,4 +18,13 @@
|
|
18
18
|
|
19
19
|
`k ** 2 >> 2`
|
20
20
|
|
21
|
-
ということになるわけです。
|
21
|
+
ということになるわけです。
|
22
|
+
|
23
|
+
---
|
24
|
+
上記の奇数のときの論理が不十分だったので訂正します:
|
25
|
+
|
26
|
+
k(奇数)より1小さい偶数をeとすると
|
27
|
+
`k ** 2 == (e + 1) ** 2 == e ** 2 + 2 * e + 1`
|
28
|
+
eは偶数なので`e ** 2`は偶数、`2 * 2`も偶数。よって`e ** 2 + e * 2`は必ず4の倍数になる。
|
29
|
+
つまりkが奇数の時、`k ** 2`のLSB(下位1ビット)は必ず1で、LSBの一つ上の桁のビットは必ず0になる。
|
30
|
+
故に`(k ** 2 - 1) / 4 == k ** 2 >> 2`と同じとなる
|