teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤記訂正

2019/04/21 01:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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

訂正

2019/04/21 01:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

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