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 - Perl

ふつうに Math::BigFloat を使ってます。

実行結果:
37 => 199148647.99997804655185676650092387533591914368128
58 => 24591257751.999999822213241469576192355288556885837
67 => 147197952743.99999866245422450682926131235350749310
163 => 262537412640768743.99999999999925007259524857371873
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
use strict;
use warnings;
use Math::BigFloat;

my $diff = 0.0001;
my $pi   = Math::BigFloat->bpi(50);

sub exp_pi_sqrt ($) {
    return exp( $pi * Math::BigFloat->new( $_[0] )->bsqrt );
}

print( $_->[0], " => ", $_->[1], "\n" ) for 
    grep {
           abs( $_->[1] - $_->[1]->copy->bfloor )  <= $diff
        || abs( $_->[1] - $_->[1]->copy->bceil  )  <= $diff
    }
    map { [ $_ => exp_pi_sqrt($_) ] } 1 .. 200;

Index

Feed

Other

Link

Pathtraq

loading...