2011年7月5日火曜日

素因数分解

プロジェクトオイラーの第5問解く前に素因数分解しないといけなさそうなので、とりあえず素因数分解の処理だけ書いてみました。

1~10の整数の素因数分解した結果リストを表示

【ソース】
object soinsubunkai{


 def main(args:Array[String]) :Unit = { 
  println((1 to 10).toList.map(getSoinsu(_)))
 }


 def soinsu(lst:List[Int],moto:Int,waru:Int):List[Int] = 
  if(moto>waru) {if (moto%waru==0) soinsu(lst:+waru,moto/waru,waru) 
  else soinsu(lst,moto,waru+1)} else {lst:+waru}


 def getSoinsu(num:Int):List[Int] = 
  if(num>1) soinsu(List(),num,2) else (List())
}




【処理結果】

List(List(), List(2), List(3), List(2, 2), List(5), List(2, 3), List(7), List(2, 2, 2), List(3, 3), List(2, 5))

0 件のコメント:

コメントを投稿