回答編集履歴

2

誤記訂正

2019/04/21 01:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

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 * 2`も偶数。よって`e ** 2 + e * 2`は必ず4の倍数になる。
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

訂正

2019/04/21 01:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

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`と同じとなる