2011年5月6日金曜日

Scala 素数判定と√

√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 件のコメント:

コメントを投稿