exp(pi * sqrt(n))が整数に近くなるnを探す
Posted feedbacks - Scala
Apfloatを使いました。
それだけじゃ何も芸がない感じだったので、implicitでApfloatをあまり意識せずに書ける様にしました。
see: Apfloat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import org.apfloat._
import scala.runtime._
object findAlmostInt {
implicit def toApfloat[A <: AnyVal](i:A):Apfloat = {
new Apfloat(i.toString, 32)
}
implicit def toDouble(i:Apfloat):RichDouble = i.doubleValue.toDouble
val PI = ApfloatMath.pi(32)
def apply(i:int, j:int) = {
(i to j-1).filter{n =>
val x = ApfloatMath.exp(PI.multiply(ApfloatMath.sqrt(n)))
val y = x.ceil.subtract(x)
(if(y<0.5){y}else{1.subtract(y)}).abs < 0.0001
}.toList
}
}
println(findAlmostInt(1,200))
|



herumi
#3416()
Rating0/2=0.00
Pythonで34行のスクリプトを書いて得られた出力の例が下のようになります。
この問題は光成さんに教えて頂いた e^{π*sqrt{163}}≒26253741640768744 が元になっています。ご協力ありがとうございました。[ reply ]