pidigits.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 70 行
SCALA
70 行
/* ------------------------------------------------------------------ *//* The Computer Language Shootout *//* http://shootout.alioth.debian.org/ *//* *//* Contributed by Anthony Borla *//* ------------------------------------------------------------------ */object pidigits{ def main(args: Array[String]): unit = { val N: int = Integer.parseInt(args(0)); var i: int = 10 while (i <= N) { System.out.println(pi_digits(10) + "\t:" + i) i = i + 10 } i = i - 10 if (i < N) { System.out.println(pi_digits(N - i) + "\t:" + N) } } def compose(a: Array[BigInt], b: Array[BigInt]): Array[BigInt] = { return Array(a(0) * b(0), a(0) * b(1) + a(1) * b(3), a(2) * b(0) + a(3) * b(2), a(2) * b(1) + a(3) * b(3)) } def extract(a: Array[BigInt], j: int): BigInt = { return (a(0) * j + a(1)) / (a(2) * j + a(3)) } def pi_digits(c: int): String = { val r: StringBuffer = new StringBuffer(); var i: int = 0 while (i < c) { var y: BigInt = extract(Z, 3) while (y != extract(Z, 4)) { K = K + 1; Z = compose(Z, Array(K, 4 * K + 2, 0, 2 * K + 1)) y = extract(Z, 3) }// Z = compose(Array(10, (-y) * 10, 0, 1), Z) Z = compose(Array(10, y * (-10), 0, 1), Z) r.append(y); i = i + 1; } return r.toString() } var K: int = 0 var Z: Array[BigInt] = Array(1, 0, 0, 1)}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?