第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



まあ、足りなくなったらまた買い足そう!

新しい生活、楽しみだなあ!





  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る