challenge exp(pi * sqrt(n))が整数に近くなるnを探す

1以上200未満の整数nのうち、 exp(pi * sqrt(n))がほとんど整数であるようなnを求めるコードを書いてください。 なお、expは底がeである指数関数 - Wikipedia、 piは円周率、sqrtは平方根です。また「ほとんど整数である」とは 整数からプラスマイナス0.0001の範囲にあることとします。

Pythonで34行のスクリプトを書いて得られた出力の例が下のようになります。

37 199148647.999978
58 24591257752.000000
67 147197952743.999999
163 262537412640768744.000000 
この問題は光成さんに教えて頂いた e^{π*sqrt{163}}≒26253741640768744 が元になっています。ご協力ありがとうございました。

Posted feedbacks - Ruby

素直にbigdecimalを使って。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
require "bigdecimal"
require "bigdecimal/math.rb"

include BigMath

def exp_pi_sqrt(x)
  tmp = exp(PI(30) * sqrt(BigDecimal(x.to_s), 30), 30)
  err = BigDecimal 0.0001.to_s
  if (tmp > (tmp.floor - err)) and (tmp < (tmp.floor + err))
    print "#{x} #{tmp.to_s("F")}\n"
  elsif (tmp > (tmp.ceil - err)) and (tmp < (tmp.ceil + err))
    print "#{x} #{tmp.to_s("F")}\n"
  end
end

=begin
for i in 1 .. 200
  exp_pi_sqrt i
end
=end

Index

Feed

Other

Link

Pathtraq

loading...