√nはmath.sqrt(n)とのこと。
これを利用して、素数かどうか判定する関数を作成する。
素数=2以上√n以下の整数で割り切れない自然数(のはず)なので、
割り切れるかどうかを判別する関数を作成。
⇒2以上√nのリストを上記関数でチェックする。
⇒割り切れる数がなければ素数。
-----------------------------------------
//割り切れるかどうか判定する関数
def warikire(i:Int,k:Int)=i/k==i.toDouble/k.toDouble
//素数判定関数
def sosu(i:Int)=(2 to math.sqrt(i).toInt).exists(warikire(i,_))==false
sosu(10)
Boolean = false
sosu(13)
Boolean = true
-----------------------------------------
(a to b)でa以上b以下の整数のリストを取得できる。
このリストに対して、warikire関数を満たすメンバーが存在するかどうかチェックする。
存在しない場合、existsの結果がfalseで帰ってくるので、false==falseとなった場合に、
sosu関数の結果としてtrueを返す。
てな仕組み。
関数型言語、かなり面白い・・・
0 件のコメント:
コメントを投稿