2010-11-29

足し算・引き算・掛け算・割り算

足し算・引き算・掛け算・割り算の中で、最も実行がしづらい演算はどれか?
引き算だと思う。

足し算・引き算・掛け算・割り算の中で、概念的に最も理解しがたい演算はどれか?
掛け算だと思う。


これだけではなんのことやらわからんので、もそっと考えてみた。

2
数の足し算というのは実にやり易いし概念的にも分かりやすい。
なにしろ下の桁から順に各位を足していけばよい。
繰り上がったらその分1を次の桁に足すというくらいが難しい操作だが、
注意点といえばそれくらいで、基本、一桁+一桁の足し算の繰り返しだけでできる。
増加していく様子が、上にだんだん積み上がっていくという現象は、
実にイメージしやすく、分かりやすい。
算盤を知っていれば、理解しやすさは更に上がる。
上に上に積み上がって増えていく様子がビジュアルにも見えるからだ。
等しい数をだんだん足していくと上の桁は増加が対数的に鈍る、という点で、
位取り記数に惑わされる感覚はあるが、普段あまり意識することはない。
対数的増加が鬱陶しくなるのなんて、普段は素数分布を考える時くらいか。

2
数の引き算というのは、概念的には分かりやすい。
足し算の分かりやすさの恩恵で、その逆演算としての分かりやすさというのがある。
ooooooooooo
からoooを引いたらooooooooだというのはイメージとして理解しやすい。
ところが、子供に引き算の筆算を実行させるとこれが実に間違えやすい。
あれと思って自分でも筆算をやってみると、繰り下がりのところで一瞬迷う自分を発見する。
特に日常的に行う10000円や1000円から数十円引くなんていう、激しい繰り下がりのあるときに、
ちょっと体調が悪かったりすると、お釣りを間違えて考えていたりする。
まあ間違えたとすぐ気付きはするのだが、自信を持って実行出来るかと言われると詰まる。

お釣りの計算程度ならいいが、予算の計算とかもっと大きい桁になってくると恐ろしい。
そもそも子供の頃、引き算の筆算を習ったとき、
上の桁から「借りてくる」という考え方にはどこかしら違和感を覚えた。
その違和感を引きずっているのか知らないが、
例えば1250000-479682なんて計算を筆算でやると、
どの桁は今いくつ借りてきているのか、こんがらがってくる。
普段は電卓を使うからあまり意識はしないが、いざ筆算となると全然自信がない・・・。

子供の頃覚えた違和感からだろう、小学か中学のいつごろからか、
いつの間にか引き算で筆算をしなくなっていた。
足し算をするとき頭の中を流れるプロセスは、足し算の筆算に近い。
10
を作って楽しようと足しやすい順番を考えたりはするが、基本的には、
下の桁から一桁ずつ繰り上がりに注意しながら足していく。
引き算はそうはしない。653-345の計算を暗算するとき、頭の中では
653-345=653-(300+40+5)=653-300-40-5=353-40-5=313-5=308
というように、足し算とは別のプロセスが流れることが多いように思う。
てゆーか、この方が自分的感覚では圧倒的に速い。
上の桁から筆算していっているだけと言われれば、まあそうなのかもしれないが、
下の桁から計算して上の桁から借りてくるプロセスはどうにも馴染めない。

このような計算法を子供に教えると、速くて便利とは感じるようだが、
結局は慣れ親しんだ筆算に戻してしまう子のほうが多いように思う。
それで筆算を間違いなく出来るなら別に文句はないのだが、
繰り下がりの把握にうんうん唸って時間をかけた挙句、間違える。
テストで案外時間を取るのは、式の計算ではなく数の計算なだけに
もうちょっとうるさく引き算では上の算法を使うよう言ってみようかなあ。
数の計算は中学数学において最重要の箇所ではないから、迷うのだが・・・。

ヨーロッパ人は壊滅的に引き算ができないらしい。
初めてフランスに行ったとき、その辺のキヨスクで何かを買って、
金額は忘れたが例えば2.3フラン(まだユーロじゃなかった)の買い物で、
財布に10フラン札と、コインで0.3フラン持っていた。
日本では普通に、230円の買い物で1030円出して800円お釣りをもらう。
つまり1030-230=1000+30-200-30=1000-200+30-30=800
という計算を、お店の人なら誰でもできる。
そういう感覚で、10.3フラン出して8フランお釣りをもらおうと思ったら、
「なんじゃそりゃわからん、10フランだけ出せ」と断られた。
そして、まず2.3と数え、0.1フラン玉を4,5,6,7,8,9,10と数え上げながら7個渡され、
次に1フラン札を4,5,6,7,8,9,10と数え上げながら7枚渡された。
つまり10-2.3=7.7と計算するのではなく、2.3+x=10の形にしてから、
10
になるまでxを足し上げていく。引き算はできないので、足し算に変形してから実行するわけだ。

そもそもヨーロッパの言語は命数法の段階で終わっている。
ten
のつぎはten-oneではなくelevenだ。
大昔、数を数えるときに足指まで使っていたか何かで
20
までは、20種類の別の数字があるかのような、20進法の命数をする。
・・・のくせに、20からは十進に切り替わる。
21-12は、201から102を引くのではなくてtwenty-oneからtwelveを引くのだ。

まあ1319、例えばthirteenthird-tenの意味らしいが、
だとすれば12まで12進法で、13から1の位と10の位が逆で、
20からは10の位から・・・なんつー恐ろしい事態になっている。


それでも英語はまだマシで、例えばドイツ語では、
20から先の2桁の数はは1の位を先に言うので、英語的に言えば
21-12one and twenty (einundzwanzig)からtwelve(zwölf)を引くことになる。
フランス語や他の言語もまた別のややこしさがあるらしい、よくは知らんが。
ともかくそりゃ子供は大混乱、いや大人も大混乱だろう。引き算できないのもむべなるかな。
それでもなんとか分かりやすくしようとした努力の結果、
数学の発達が促されたのかもしれんとまで思う。

計算大得意のインドではどうなんだろう。
ヒンディー語は印欧語だから、命数法はヨーロッパに似てるんじゃないかと思うが、
なにか秘訣があるのだろうか。
・・・と思って調べてみたら、ヒンディー語は命数法はヨーロッパに似かよっているのだが、
不規則な発音が多く、実質的に1100までのすべてを、

100進法的にベタ暗記するようなものだそうだ。
地方によっては1×199×99の掛け算を暗記せにゃならず、
結果的に計算が早くて得意になる理由の一端はここか。
多分その前段階として、1+199+991-199-99も暗記しちゃうんだろうなあ。

ともかくかように、引き算というのは概念的には難しくないが、
実行が難しい計算なのだ。

掛け算の実行は、面倒だが九九を知っていれば難しくはない。
筆算の中に出てくるのは足し算だけだから、
計算苦手な自分でも2×1桁くらいなら、
例えば17·7=(10+7)·7=70+49=119という暗算くらいはできる。
足し算の繰り返しなので間違えることもあまり多くはない。
292=(30-1)2=302-2·30·1+12=901-60=841
なんかになると、
引き算が混ざるのでちょっと暗算に自信がなくなってくるが、できないこともない。

ちなみに「九九を知っていれば」の部分はちと問題で、
たとえばヨーロッパでは九九は覚えないし、九九の表は教室の壁に貼ってあるそうだ。
シューベルトの「野ばら」のメロディに載せた覚え歌みたいなのがある場合もあるが、
あまり採用されておらず、日本の九九のようなリズミカルな覚え方がないのが
理由の一つらしい。学校の教室では表が見られるが、
それ以外の場所では見られないから、店とかでは難儀するだろうなあ。
逆にインドでは地方によっては1×199×991万個を暗記する。

現代代数学のイデアル論のもととなる概念を生み出したことで著名な、
19
世紀のドイツの数学者クンマーは、大学の講義中に7×9の答えがわからなくなったらしい。
黒板を前に困っていると、学生が「61ですよ」と答えた。
学生がクンマーをからかって間違った答えを言ったのか、
その学生も本当に間違えていたのか知らないが、日本の大学ではありえない光景。
その学生の答えを聞いて、クンマーは
61は素数だからそれはありえない。655の倍数だが、
5
7×32の素因数でないから65はありえない。67も素数。
69
は大きすぎる(7×10=70のほうが近い)。だから63だ。」
と頭いいと言っていいのかちょっと迷う判断で63という答えを出したそうな。
ヨーロッパ人には掛け算も鬼門らしい。

話がそれた。ともかく掛け算の実行はややこしいが難しくはない。
が、概念となると別だ。
桁が大きくなると、2数の掛け算の結果の桁はその2乗で大きくなる。3数なら3乗。
1m
100cmだが1m210000cm21m31000000cm3いうように莫大な数になると
初めて小学校で習ったときは驚きを禁じ得なかった。
先生が床に1m×1mの囲いをテープで作り、1cm×1cmの紙片を幾つか並べていって、
ものすごい数の紙片が必要であることを説明していたが、
その囲いに本当に1万個もの紙片が必要なのか信じがたく、
本気で数えようと思って挫折したことがある。
ちょっと桁が大きくなるだけで、とんでもない彼方へ吹っ飛んでいく掛け算は、
その振る舞いが実に把握しがたい。

素因数分解を習うと、掛け算の概念を素数という骨組みから見直せるので
多少わかった気になったりもするがそんなモノは錯覚。
3
桁同士でも結果はたいてい6桁になるわけで、3桁の素数は全部は覚えていない。
しかも6桁のところにはさらに大量の素数がある。
素数分布は、対数の逆数というえらくのろい振る舞いをする分布だから、
小さい数の素因数分解で把握したと思った桁には、
そういう小さい素数より遥かに多い数の、新しい素数があるのだ。
大きな数をぱっと与えられたとき、その数が素数か合成数かは楽に判定できる。
が、合成数だったとしてどのように素因数分解できるのかを決定できる、
速いアルゴリズムは今のところ存在しない。
おそらく正しいと思われているP≠NP予想が正しいと証明されれば、
そのようなアルゴリズムは存在しないことが証明されるとのこと。
このことが現代のコンピュータ通信の信頼性の基礎をなしている。
つまり桁数が大きくなると、素因数分解での把握など絶望的ということ。

掛け算があまりにも理解し難い、特にヨーロッパ人には理解しがたいので、
対数が開発されたのだろう。対数の概念が入ると、掛け算は概算としては例えば、
2314×5123=2.314×102×5.123×102
2.3×5.1×104≈11×104=110000
のように、浮動小数点演算として見直すことができるし、それで大抵十分だ。
仮数部2.314, 5.123も対数表現すれば、掛け算は完全に足し算に化ける。
足し算は理解しやすく、実行も楽。大きな数を天文学的数なんて言うが、
当の天文学者はそんな大きな桁数を使っての、宇宙での物理現象の理解などしていない。
対数にしたときの指数で理解して、スケールのオーダー評価をする。
あとは単位を適当にとって相対値で考えるのがのが常だ。
それでもダイナミックレンジ、つまり考えなければならない桁数の幅は、
地上での現象に比べれば広いことが多いから、結局対数的理解をしないと理解しがたい。

掛け算って難しい。

割り算は掛け算の逆演算と思うと理解し難いかもしれないが、
比と思うとそうでもない。フランスでは割り算記号÷をそもそも教えず、
/
を使うそうだ。a÷bという計算があったとき、
計算実行時に出てくるのはaより小さい数ばかりだから、
掛け算のように彼方へ吹っ飛んでいく感覚はない。
最初に出てきた数よりややこしくなることはないという安心感がある。
a/b
という比と思えば比の分割イメージで理解しやすい。
筆算を実行するときには引き算を大量に使用するので、
実行の難しさというのはあるのだが、
手計算では実行が難しいような大きな数同士の割り算について、
剰余まで精密に考えなければならない場合というのは、
そんなに多くはないと思う。何をやっているのかわからなくなる怖さはない。

とまあこんな感じで、最もやりにくいのは引き算、最も難しいのは掛け算と思う。
子供に計算を教えるときに、意識しておきたい部分だ。

2010-11-28

シルヴァーマン 「はじめての数論」第3版 第27章練習問題

27.1
(a) 4370=2·5·19·2319≡23≡3(mod 4)だから表せない。
(b) 1885=5·13·29だから表せて、1885=432+62
(c) 1189=29·41だから表せて、1189=332+102
(d) 3185=5·72·13だから表せて、3185=562+72

27.2
(a) 4370=2·5·19·2319≡23≡3(mod 4)だから表せない。
(b) 18852=18132+5162
(c) 11892=9892+6602
(d) 3185の素因数には72があるので、規約ピタゴラス数の斜辺としては現れない。

27.3
定理27.2においてa=st=5929=72·112とみて、
s=7, t =11とおけば、(a,c)=(36, 85)
s=1, t=7·11とおけば、(a,c)=(2964, 2965)


27.4
あるiに対しpi≡3 (mod 4)とし、m=A2+B2と表せたとする。
もしpi |A2ならpi2|A2, pi2|B2だから、piMの素因数に含まれるので問題の場合ではない。
そこでpi |A2でないとすると、A2+B2≡0 (mod pi)で、A, B 0 (mod pi)
piは素数なので、AA-1≡1 (mod pi)となるA-1が、練習問題9.2の補題2により存在するから、
1+(A-1B)2≡0 (mod pi)より(A-1B)2≡-1 (mod pi)。つまり(-1/pi)=1となるが、
pi≡3 (mod 4)なので平方剰余の相互法則に反する。
したがって、m2つの平方数の和に表すことはできない。


27.5
おそらく定理27.1(b)もこの練習問題27.5(a)(b)も記述不足で、定理27.1(a)M=1
つまり「数mが奇数/偶数かつ相異なる素数の積に素因数分解できて」
という前提の話だと思う。原著でどうなっているのか知らないが。
もしそうでなければ、素数p1, p2≡1 (mod 4)としてm= p1 p22のとき、
mは練習問題27.5(a)の条件を満たすが、gcd(a,b)= p2となることが可能。

(a)
定理27.1(a)により、m2つの平方数の和としてm= a2+b2と表せるが、
gcd(a,b)=M>1なら、a=a'M, b=b'Mとしてm=M2(a'2+b'2)なので、
mは相異なる素数の積のみにならない。したがってgcd(a,b)=1

(b)
定理27.1(a)を用い、(a)と同様に証明できる。

(c)
mが素数なら定理26.1により明らか。
mの素因数に素数の平方p2があるとき、p2|( a2+b2)ならp|a, p|bとなる事を示せれば、
gcd(a,b)=1と矛盾するので、(a)(b)のどちらかの数であることがわかるのだが、
どうやればいいんだろう・・・。

27.6
(a)
(i) 10=32+12のみなので、S(10)=1
(ii) 70=2·5·77≡3 (mod 4)だから、2つの平方数に表すことはできないのでS(70)=0
(iii) 130=2·5·13=92+72=112+32なので、S(130)=2
(iv) 1105=5·13·17=332+42=322+92=312+122=242+232なので、S(1105)=4

(b)(c)(d)
S(5)=1, S(5·13)=2, S(5·13·17)=4, S(5·13·17·29)=8,
S(13)=1, S(13·17)=2, S(13·17·29)=4, S(13·17·29·37)=8
から、
S(p1 p2... pr)=2(r-1)
と予想される。証明は・・・。

2010-11-26

シルヴァーマン 「はじめての数論」第3版 第26章練習問題

26.1
(a)
p=a2+ab+b2
a
b
3
1
1
7
1
2
13
1
3
19
2
3
31
1
5
37
3
4
43
1
6
p≡1 (mod 6)またはp=3、と予想される。

p=a2+ab+b2が素数ならp≡1 (mod 6)またはp=3を証明する。
a=0またはb=0のときpは平方数となり素数でないので、
a≥1, b≥1。このときp≥3なのでp奇数だから、
abのどちらかが奇数でどちらかが偶数であるか、またはabがともに奇数。

(i) abのどちらかが奇数でどちらかが偶数のとき
pの式はa,bについて対称なので、aが偶数としてよい。
a=2lb=2k+1 (l.k)として、p=a2+ab+b2=2(2l2+2kl+l+2k2+2k)+1
l.k の式に共通因数2があって2|6だから、mod 6ではl.k mod 3で調べれば十分である。
0 l.k ≤29通りの組み合わせに対し、(l.k)=(0,1), (1,2), (2,0)に対しては、
p≡3 (mod 6)なので、3|pとなりp=3のみが素数で、他は素数ではない。
他の(l.k)についてはすべてp≡1 (mod 6)となる。
したがって、pが素数ならp≡1 (mod 6)またはp=3

(ii) abがともに奇数のとき
a=2l+1b=2k+1 (l.k)として、pa2+ab+b2=4(l2+kl+k2)+3 (mod6)
(i)と同様に、l.k mod 3で調べれば十分。
0 lk ≤26通りの組み合わせに対し、l=kのときは、p≡3 (mod 6)なので、
3|pとなりp=3のみが素数で、他は素数ではない。
他の(l.k)についてはすべてp≡1 (mod 6)となる。
したがって、pが素数ならp≡1 (mod 6)またはp=3

以上により、p=a2+ab+b2が素数ならp≡1 (mod 6)またはp=3

逆の、素数pについてp≡1 (mod 6) またはp=3ならp=a2+ab+b2となるa,bが存在すること、
についてはp=3のときはa=b=1。あとは降下法でなんとか構成するのだろうなあ・・・。

(b)
p=a2+b2
a
b
2
1
1
5
1
2
13
2
3
17
1
4
29
2
5
37
1
6
41
4
5
定理26.1によりp≡1 (mod 4)またはp=2

26.2
p ≥5は奇数だから、abのどちらかが奇数でどちらかが偶数である。

(i) aが偶数でbが奇数の場合
a=2lb=2k+1 (k.l)として、p=a2+5b2=4l2+20k(k+1)+54l2+5 (mod 20)
l≡0 (mod 5)ならp≡0 (mod 5)なってp5よりpは素数でないから、l0 (mod5)
そこでさらにl=5m+n (1n≤4)とおけば、1n≤4に対し
p4l2+54n2+5≡1または9 (mod 20)

(ii) aが奇数でbが偶数の場合
a=2l+1b=2k (k.l)として、p=20k2+4l(l+1)+14l(l+1)+1 (mod 20)
ここでl=5m+n (0n≤4)とおけば、n=2のときはp4n(n+1)+1≡0 (mod 5)なって
p5よりpは素数でない。n=0,1,3,4に対してはp4n(n+1)+1≡1または9 (mod 20)

以上により、p=a2+5b2≥5が素数ならp≡1または9 (mod 20)


26.3
降下法1回目: 2422+412=5·12049
降下法2回目: 1052+322=12049


26.4
(a)

降下法1回目: 160≡4 (mod 13), 7≡-6≥-13/2 (mod 13)から462+762=4·1973
降下法2回目: 232+382=1973
(7≡7≥13/2 (mod 13)を使ってしまうと、
532+842=5·1973と992+82=5·1973の間を堂々巡りするので注意。)

(b)
降下法1回で261≡1 (mod 10), 947≡-3 (mod 10)から2582+1732=96493



26.5

(a)
a
b
c
p=a2 +b2+ c2
0
1
1
2
0
1
2
5
0
2
3
13
0
1
4
17
0
2
5
29
0
1
6
37
0
4
5
41
0
2
7
53
0
5
6
61
0
3
8
73
0
5
8
89
0
4
9
97
1
1
1
3
1
1
3
11
1
1
9
83
1
2
6
41
1
3
3
19
1
3
7
59
1
4
6
53
1
6
6
73
2
2
3
17
2
2
9
89
2
3
4
29
2
6
7
89
3
3
5
43
3
3
7
67
3
4
4
41
3
4
6
61
3
4
8
89
3
5
5
59
3
5
7
83
5
6
6
97

この表により、p=2, 3, 5, 11, 13, 17, 19, 29, 37, 41, 43, 53, 59, 61, 67, 73, 83, 89, 97
つまり7, 23, 31, 47, 71, 79は三つの平方数の和でない。

(b)
(i) p-1 (mod8)
(ii) p-1 (mod8)



なお合成数を含めるといわゆる三平方和定理が成り立つことが、

Legendreにより証明されているそうだ:
「自然数m3つの平方数の和で表される必要十分条件は
m=4n(8k+a) (n≥0, k≥0, a=1,2,3,5,6)
つまりm=4n(8k+7)の場合かつその場合に限り、
m3つの平方数の和に表されない。」
この系の三角数定理については練習問題29.2

(c)
(ii)の対偶「素数p3つの平方数の和ならp-1 (mod8)」を証明する。
p=2のときは成り立っている。他のpは奇数なので、
a,b,c2つが偶数・1つが奇数か、またはa,b,cがすべて奇数。
a,b,c2つが偶数・1つが奇数のとき、a=2l, b=2k, c=2m+1 (k.l,m{,0})として、
p=4(l2+k2+m2+m)+1。括弧の係数4があるので、mod 8ではl,k,mmod 2で調べれば十分。
l,k,m=0または1のすべての組み合わせで、p1または5 (mod8)なので、p-1 (mod8)
a,b,cがすべて奇数のとき、a=2l+1, b=2k+1, c=2m+1 (k.l,m{,0})として、
p=4(l2+l+k2+k+m2+m)+3l2+l≡0 (mod 2)が常に成り立つから、p≡3-1 (mod8)
したがって(ii)が成り立つ。