回答編集履歴
2
誤記訂正
test
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
`k ** 2 == (e + 1) ** 2 == e ** 2 + 2 * e + 1`
|
54
54
|
|
55
|
-
eは偶数なので`e ** 2`は偶数、`2 *
|
55
|
+
eは偶数なので`e ** 2`は偶数、`2 * e`も偶数。よって`e ** 2 + e * 2`は必ず4の倍数になる。
|
56
56
|
|
57
57
|
つまりkが奇数の時、`k ** 2`のLSB(下位1ビット)は必ず1で、LSBの一つ上の桁のビットは必ず0になる。
|
58
58
|
|
1
訂正
test
CHANGED
@@ -39,3 +39,21 @@
|
|
39
39
|
|
40
40
|
|
41
41
|
ということになるわけです。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
---
|
46
|
+
|
47
|
+
上記の奇数のときの論理が不十分だったので訂正します:
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
k(奇数)より1小さい偶数をeとすると
|
52
|
+
|
53
|
+
`k ** 2 == (e + 1) ** 2 == e ** 2 + 2 * e + 1`
|
54
|
+
|
55
|
+
eは偶数なので`e ** 2`は偶数、`2 * 2`も偶数。よって`e ** 2 + e * 2`は必ず4の倍数になる。
|
56
|
+
|
57
|
+
つまりkが奇数の時、`k ** 2`のLSB(下位1ビット)は必ず1で、LSBの一つ上の桁のビットは必ず0になる。
|
58
|
+
|
59
|
+
故に`(k ** 2 - 1) / 4 == k ** 2 >> 2`と同じとなる
|