第8話 記述のための関数の定義
いやーー、外国への引っ越しは大変だ!何から何まではじめから揃えなきゃいけないもんなあ!
ルーチンはこの夏から留学生として外国で暮らすことになった。なによりもまず難儀するのは家探しである。家探しを終えればあとは環境を整える作業がはじまる。ルーチンは幸運にもすぐに家を見つけた。しかし、その家のなかには何もないので、一から全て揃えなければならない。
そもそも素数を得るために留学してきたのだから、はじめに用意しなければならないのは次の関数だ。
n番目の素数を取り出す関数
p(n)
これは素数指数表現のn番目の項の底(その項に対応する素数)を取り出すものだ。ただし、便宜的にp(0)=1とする。
p(0)=1
p(1)=2
p(2)=3
p(3)=5
その素数が何番目であるかを返す関数
rp(n) を次のように定義する。
if n∈素数
p^(-1)(n)
else
0
これは、素数があたえられたとき、これが素数指数表現の何番目の項であるか、を返す関数だ。
rp(1)=0
rp(2)=1
rp(3)=2
rp(4)=0
rp(5)=3
素数階乗
pm(n) を次のように定義する
Π[0≦k≦n] p(k)
これは、素数指数表現においで、n番目の項まで全て1を置いた列を返す関数だ。n#とは違う定義なので注意。
pm(1)=2
pm(2)=6
pm(3)=30
pm(4)=210
自然数nの素因数分解のm番目の項の指数を取り出す関数
pf(n,m) を次のように定義する
max{k|n÷(p(m))^k∈自然数}
たとえば、
pf(100,3)=2 100は5で2回まで割れる
自然数nの最小の素因数を取り出す関数
minp(n) を次のように定義する
min{p(k)|p(k)はnを割り切る。kは正整数}
これは、II部分の底が、何かを知る関数だ。
minp(77)=7
上記関数が何番目の素数かを知る関数
mip(n) を次のように定義する
rp(minp(n))
これは、II部分が何番目の項なのかを知る関数だ。
mip(77)=4
自然数nの最大素因数を取り出す関数
maxp(n) を次のように定義する
max{p(k)|p(k)はnを割り切る。kは正整数}
これは素数指数表現の最後の項の底を知る関数である。
maxp(77)=11
上記関数が何番目の素数かを知る関数
map(n) を次のように定義する
rp(maxp(n))
これは、素数指数表現が何項あるのかを知る関数だ。
map(77)=5
素因数ずらし。nの素因数分解の素数を全てm番ずらす関数(mは整数)
sp(n,m) を次のように定義する
Π[1≦k≦map(n)] p(k+m)^(pf(n,k))
これは、I部分の0を増やす(減らす)ための関数としても使えるし、他の用途も非常に多い。
sp(15,2)=77
対数関数。nの2を底とした対数
log(n)
これは、素数指数表現の( )を一つ取り去る関数だ。例えば(((1)))=16を((1))=4にしたいとき、
log(16)=4
m番目の項の( )を一つ取り去る関数
pl(n,m) を次のように定義する
n÷(p(m)^pf(n,m))×p(m)^(log(pf(n,m)))
たとえば、(1,((1)))=162を(1,(1))=18にしたいとき、
pl(162,2)=18 162÷(3^4)×3^(log(4))=18
まあ、足りなくなったらまた買い足そう!
新しい生活、楽しみだなあ!
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます