gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

関数a^xは周期関数か?

2016-08-28 13:09:34 | ブログ
 2つの素数p,qを掛け算した数n=pqは、nが大きな数になるとnを素因数分解してp,qを求めるのが容易ではない。そこで、素数のもつこの性質がRAS暗号に利用されている。

 しかし、n未満でnと互いに素な数aを選び、aをx乗したa^x(x=0,1,2,...)をつくり、各数をnで割って余りを並べてみると、不思議な周期性が現れる。

 例えば、n=15の場合には、n=pq=3×5とすぐに計算できるが、この周期性が出現することを確かめてみる。

 a=11を選び、11^0,11^1,11^2,11^3を計算すると、1,11,121,1331となるので、各々を15で割って余りを求めると、1,11, 1,11が得られ、1または11が周期的に繰り返されることが分かる。

 そうすると、
   11^2=15×8+1
であるから、11^2-1を因数分解すると、
   11^2-1=(11-1)×(11+1)=15×8
と書ける。

 ここで得られた10と12について、15と10、または、15と12の最大公約数を求めると、5または3が得られるから、これらがp,qに相当することが分かる。

 a=4を選び、同様の計算をしても、やはり4^xをnで割った余りには周期2の周期性がみられ、同様にp,qとして3または5が得られる。a=7の場合には、周期4の周期性が現れる。

 一般に、n-1を2乗すると、(n-1)^2=n^2-2n+1であるから、この数をnで割ると、余りが1となることがすぐ分かる。そうすると、(n-1)^x(x=0,1,2,...)をnで割って余りを求めると、1,n-1,1,n-1,...の周期性が現れる。n+1をx乗した数についても同様である。

 しかし、a=n-1やn+1の場合には、pやqが現れない。そこで、これらの数を除き、周期性をもつなるべく小さいaを探す計算が必要となるが、nが大きな数になると、計算は容易ではない。

a^xをnで割った余りが1になることを、
   a^x(mod n)=1
と表現する(x=0,1,2,...)。これは、nを法とするa^xの剰余が1である、と言い換えてもよい。

 a^x(mod n)が周期性をもつとする。a^2(mod n)=1ならば、a^2m(mod n)=1である(m=0,1,2,...)。何故なら、a^2=kn+1(k=1,2,...)と書けるから、
   a^2m=(kn+1)^m=(k^m)(n^m)+...+mkn+1
と展開できる。従って、a^2m(mod n)=1となる。

 さらに、a(mod n)=aならば、a^(2m+1)(mod n)=aである。何故なら、
   a^(2m+1)(mod n)=a^2m(mod n)a(mod n)
と展開できる。a^2m(mod n)=1であるから、a^(2m+1)(mod n)=aとなる。

 関数a^x(mod n)が周期性をもつならば、この関数をフーリエ級数に展開できる。

 a^x(mod n)が周期2の関数ならば、1,a,1,a,...の繰り返しとなる。aは1でさえなければ任意であるから、簡単のために-1と置き換える。そうすると、a^x(mod n)は関数cosxと表すことができる。ここで、
   x=2mのとき:x=2mpと置き換えると、cosx=1
   x=2m+1のとき:x=(2m+1)pと置いて、cosx=-1
である。円周率パイをpで表している。

 a^x(mod n)が周期4の関数ならば、1,a,b,c,1,a,...の繰り返しとなる。a,b,cは1でさえなければ任意であるから、それぞれ0,-1,0と置き換える。そうすると、a^x(mod n)は関数cos(x/2)と表すことができる。ここで、
   x=4mのとき:x=4mpと置いて、cos(x/2)=1
   x=4m+1のとき:x=(4m+1)pと置いて、cos(x/2)=0
   x=4m+2のとき:x=(4m+2)pと置いて、cos(x/2)=-1
   x=4m+3のとき:x=(4m+3)pと置いて、cos(x/2)=0

 関数f(x)が、周期2のcos関数の項、周期4のcos関数の項など、いろいろの周期のcos関数の項の足し合わせで構成されているとする。例えば、f(x)の中から周期2の関数cosxだけを抽出するには、フーリエ級数の公式を使えばよい。すなわち、f(x)cosxを積分すれば、cosxに掛けられる係数(振幅に相当する)が求められる。周期2の関数が1つだけなら、結果は1となる。

 f(x)とcosxの積の積分(内積とも言う)をとると、f(x)中のcosxの項だけが残り、cos(x/2),cos(x/4)など他の項とcosxとの積の項は0になる。cosx,cos(x/2)など各周期をもつ関数は互いに直交しているので、その内積をとると、cosxと平行なそれ自身だけが残ることになる。

 参考文献
 竹内薫著「量子コンピュータが本当にすごい」(PHP新書)