16677181699666574 >= 3**x を満たす最大の整数 x を求めよ
Python の sympy は,綺麗な解を与える。
>>> from sympy import *
>>> var('a, n, x')
(a, n, x)
>>> a = Ge(n, 3**x)
>>> a
n >= 3**x
>>> solve(a.subs(n, 16677181699666574), x)
x <= log(16677181699666574)/log(3)
>>> var('a, n, x')
(a, n, x)
>>> a = Ge(n, 3**x)
>>> a
n >= 3**x
>>> solve(a.subs(n, 16677181699666574), x)
x <= log(16677181699666574)/log(3)
>>> solve(a.subs(n, 16677181699666574), x).evalf(30)
x <= 34.0000000000000002728995950932
>>> solve(a.subs(n, 16677181699666573), x).evalf(30)
x <= 34.0000000000000002183196760745
>>> solve(a.subs(n, 16677181699666572), x).evalf(30)
x <= 34.0000000000000001637397570559
>>> solve(a.subs(n, 16677181699666571), x).evalf(30)
x <= 34.0000000000000001091598380373
>>> solve(a.subs(n, 16677181699666570), x).evalf(30)
x <= 34.0000000000000000545799190186
>>> solve(a.subs(n, 16677181699666569), x).evalf(30) # ここが分かれ道
x <= 34.0
>>> solve(a.subs(n, 16677181699666568), x).evalf(30)
x <= 33.9999999999999999454200809814
※コメント投稿者のブログIDはブログ作成者のみに通知されます