Eulerは拡張する
順番がかわるだけ
1.オイラーはフェルマーを同じ理屈
このワークシートはMath by Codeの一部です。
<オイラーは拡張する>
fermat定理は素数pを法としてap-1≡1 (mod p)だった。
pが素数ならφ(p)=p-1なので、
fermat定理は素数pを法としてaφ(p)≡1 (mod p)とかけるね。
このオイラーの定理は、この式がpが素数でないときも成り立つというものだ。
一般のnに対して、
aφ(n)≡1 (mod n)
(理由)
pは通常、素数を表す文字だから、pでなくnにしよう。mod nの剰余は{0,1,2,3,....,n-1}のn通りある。
このうち、nと互いに素な要素だけ取り出そう。x={a1,a2,....,am} m=φ(n)個だね。
少し、実験しよう。
mod10のときの剰余は{0,1,2,...,9}の9通りある。
nと互いに素な要素はL={1,3,7,9}の4個。もちろん、4=φ(10)だ。
3L(mod 10) ={3,9,1,7}と順番が入れ替わるだけ
だから、Lの4個の積K=product(L)に対して3Lの4個の積product(3L)=34Kになる。
一方で、3L(mod10)の4個の積はKに等しい。
だから、34K≡K(mod 10)。
Kは10と互いに素なので簡約できるはず。34≡1(mod10)。3φ(10)=34≡1(mod10)だね。
ということは、
14≡1(mod10)
74≡1(mod10)
94≡1(mod10)
も同様にして言えるだろう。
さっきの続きにもどる。
mod nの剰余は{0,1,2,3,....,n-1}のn通りある。
このうち、nと互いに素な要素だけ取り出そう。L={a1,a2,....,am} (m=φ(n)個)だね。
このLの1つの要素aにLをかけていくと、結果はバラバラ aL=permutate{a1,a2,....,am} (m=φ(n)個)
もし、ax≡ay(mod n)となると、a(x-y)≡0(modn)となり、aはnの倍数でないから、x-yがnの倍数。
しかし、x,yともにn以下なので、x-y=0しかない。つまり、かぶることはないから順列になる。
だから、Lのm個の積Kに対してaLのm個の積=amKになる。
fermatの証明のときにp-1個の積を考えたものが、m個の積に変わるだけなので、同じ論法が使えるね。
Lのm個の積Kに対してax(mod n)のm個の積はKに等しい。
だから、amK≡K(mod n)。Kはnと互いに素なので簡約できるはず。
am≡1(mod n)。aφ(n)=am≡1(mod n)ということだね。
つまり、aをnと互いに素な要素に限定すると、
Fermat定理の証明と同じ議論の構造が成り立つことがわかるね。
オイラー定理の使い道
fermat定理のおかげで、
素数pの倍数がap-1-1で簡単に作れたり、
ap-1≡1(mod p)から、ap-1は何乗しても1なので、
aMの計算をするのに、Mをp-1で割った余りに置き換えることができたね。
オイラーの定理があると、この便利さが一般の整数に広がるということだね。
たとえば、
32050の下2けたを知りたいとしよう。
32050≡x(mod 100)をもとめることになるね。
3は100と互いに素なので、オイラーの定理が使える。
3φ(100)≡1(mod 100) φ(100)=100×(1-1/2)(1-1/5)=40。340≡1(mod 100)
2050=40・51+10なので、32050=(340)51・310≡310 (mod 100)
一方で、35=243≡43(mod 100)
まとめると、
32050≡310 ≡432≡49(mod 100)
実際は、pythonで計算すると、
3**2050=
12547932543561311232186175917031413650934560890259836808378605585488292344065939468
11365022284164650932244868923121220062606422100022852380538230979131136144904068614
26256196024055729753342052227815373903777152994621759234110689890318104575226850206
27182773951502405028145223463508621822456076133232051697157262659843576789124636632
68799753615925901938180909772664259181890228350472826735573271087239814127192369934
77142262534810397400125449148372760105518736739713799653372917971486145577705994938
38737888933951308229440993150557847663510171162364875127580876761085929149995935904
38904404608324963657136209333918709431693260048118476465924630884619753370060347354
57235560329229923359524657214001341493525354061406228997617975531678094204704989359
99120239529320818608076589797195535937608113625517985327608148683719508295059293131
43082879644124621504867920299624372550718884716712141351592342578793983267555399307
641154737459761361766391202256528847471610468965392120084888330249
>>>
このくらいならオイラーの出番はない。