算法小常识(FP)更新...

  1. 最大公约数,辗转相除法
    def gcd(a:Int, b:Int) = if(b == 0)a else gcd(b, a%b)
  2. 冪运算
    def pow(n:BigInt, m:BigInt) = if(m == 0) 1 else pow(n, m-1) * n
  3. Hanoi汉诺塔
        def move(n:Int, a:Int, b:Int ,c:Int):Unit = {
            if(n == 1) println("%s to %s"format(a ,c))else{
                move(n-1, a, c, b);
                move(1, a, b, c);
                move(n-1, b, a, c);
            }
        }
  4. 质数
    def isPrime(n:Int) = 2 to Math.sqrt(n.toFloat).toInt forall (n%_ !=0)
  5. 大于n的第一个质数
    def prime(n:Int) = n to 2*n find isPrime get

你可能感兴趣的:(算法,基础)