今回は桁の大きな数字を計算する
方法についての解説です。
解説動画はこちら
2の1億乗と10の3000万乗
さて、早速ですが
どちらが大きい数字でしょうか
プログラミングであれば
ある程度の大きな数字でも
簡単に計算できます。
ただし、大きすぎる数字になると
計算が困難になってきます。
これを解くには
少し工夫をしないといけません。
対数関数(LOG)
ここで少しだけ対数の説明です。

a を何乗したら
b になるかというのが
Xです。
5 を 3 回かけたら 125 になるので
log5 125 = 3
になりますね。
また対数の性質として

という形に変形が行えます。
P乗の対数は、対数のP倍に等しい
これを用いれば
どちらの数字が大きくなるかは
計算ができるはずです。
Pythonでは対数を扱うものとして
mathライブラリというものがあります。
これで対数の計算を行う事ができます。
これを見ると
2の1億乗の方が大きくなりますね
2の10000乗って何桁になる?
これもプログラミングでは簡単に解ける問題ですが
頭の中だけで考えるのは少し大変ですね
これも対数関数を用いてうまく求める事ができます。
常用対数(10を底とする対数)というものがあり
桁数は `2の常用対数 * 乗数 + 1` で求めることができます。
(小数点以下は切り捨て)
2の10000乗 は
3011桁になります。
このようにして
かなり桁の大きな数字の計算は
時間が掛かったり、計算自体ができない場合があります。
そんな時はlogを用いて
うまく数式を変換させてあげると
数字の比較などが行いやすくなります。
競技プログラミングなどでも
よく出る計算手法なので
覚えておくと良いかもしれませんね
今回はLOG(対数)に関する解説でした
それでは。
方法についての解説です。
解説動画はこちら
2の1億乗と10の3000万乗
さて、早速ですが
どちらが大きい数字でしょうか
プログラミングであれば
ある程度の大きな数字でも
簡単に計算できます。
ただし、大きすぎる数字になると
計算が困難になってきます。
print(2 ** 100000000)
# ValueError: Exceeds the limit (4300) for integer string conversion; use sys.set_int_max_str_digits() to increase the limitこれを解くには
少し工夫をしないといけません。
対数関数(LOG)
ここで少しだけ対数の説明です。

a を何乗したら
b になるかというのが
Xです。
5 を 3 回かけたら 125 になるので
log5 125 = 3
になりますね。
また対数の性質として

という形に変形が行えます。
P乗の対数は、対数のP倍に等しい
これを用いれば
どちらの数字が大きくなるかは
計算ができるはずです。
Pythonでは対数を扱うものとして
mathライブラリというものがあります。
これで対数の計算を行う事ができます。
Log2 と Log10 を使って
式を変形させます。
p * log2 p * log10
import math
print(math.log(2) * 100000000)
print(math.log(10) * 30000000)
69314718.05599453
69077552.78982137
これを見ると
2の1億乗の方が大きくなりますね
2の10000乗って何桁になる?
これもプログラミングでは簡単に解ける問題ですが
頭の中だけで考えるのは少し大変ですね
これも対数関数を用いてうまく求める事ができます。
常用対数(10を底とする対数)というものがあり
桁数は `2の常用対数 * 乗数 + 1` で求めることができます。
(小数点以下は切り捨て)
import math3011
l2 = math.log10(2) p = 10000 print(int(l2 * p) + 1)
2の10000乗 は
3011桁になります。
このようにして
かなり桁の大きな数字の計算は
時間が掛かったり、計算自体ができない場合があります。
そんな時はlogを用いて
うまく数式を変換させてあげると
数字の比較などが行いやすくなります。
競技プログラミングなどでも
よく出る計算手法なので
覚えておくと良いかもしれませんね
今回はLOG(対数)に関する解説でした
それでは。