任意の数字を出現させる話はくちょう座のブログこのブログは、数学とアニメとlinuxに傾いています。>2015年12月16日11:46任意の数字を出現させる話カテゴリ数学プログラミングどうも、lip_of_cygnusです。2015の16日目の記事です。小学生の頃は自由帳に2の累乗ばっかりだけ書いているような子供でした。今日の話題は高校生の時、担任の先生からもらった問題についてです。本記事ではこの問題を2つの方法で解きたいと思います。10$が無理数であることを用います。無理数であることの証明は簡単です。10$が有理数であると仮定すると、$2^\frac{m}{n}=10$となります。両辺をn乗すると、$2^m=10^n$2と5は互いに素なので、右辺は5の倍数になるのにもかかわらず、左辺は5の倍数ではありません。ここでクロネッカーの稠密定理を用いたいと思います。b$を満たす自然数nが存在する。詳細については、こちらをご覧ください。高校数学の美しい物語2の累乗に現れてほしい自然数をxと置きます。2^m<(x+1)*10^n\\\]ゆえに、任意の自然数xが2の累乗に現れることが示されました。方法2:下から攻める2の累乗に現れてほしい自然数をxと置きます。xの後ろの方に数字を付け足します。xの桁数をNとした時に、M桁足してN+M桁が$2^{M+N}$乗の倍数となるようなものを探します。M=Nとすれば、x'の候補となる数は$10^N$個存在するのでその中に必ず$2^{M+N}=4^N$の倍数となるものは存在します。このようなx'は必ずある2の累乗中に存在するのです。証明にうつる前に補題を示します。$2^0,2^1,...,2^{5^t-1}$を考える。これを$5^t$で割った余りは全て異なる。余りが同じになる組があると仮定し、これを$2^i,2^{i+j}$(jは$j<5*t-1$を満たす自然数)とおく。$2^{i+j}-2^i=2^i*(2^j-1)$2と5は互いに素であるので、$2^j-1$は$5^t$の倍数になります。(すみませんこのあとの証明思いつきません)証明:上の桁がk(ない場合は0)で、下M+N桁がx'であるような自然数Pを考えます。P=k*10^(M+N)+x'=2^(M+N)*(k*5^(M+N)+x'')この時、x''は必ず5^(M+N)の倍数ではない自然数になります。(x'が自然数でM+N桁であることから分かる)ところで、t=M+Nとすれば補題より(k*5^(M+N)+x'')は2の累乗で表すことができます。従ってPも2の累乗で表すことができます。ゆえに、任意の自然数xが2の累乗に現れることが示されました。なんで、両方の方法で自然数xが含まれる2の累乗を出力するプログラムを作りました。いう感じで入力すると結果が返ってきます。$43322963970637732180912721627235682866194329302747133987038743447103457934462900359999600095377180907771737671271930809827721216$と出力されます。