• 締切済み

pythonで桁の大きな数字を調べる方法

cametan_42の回答

回答No.1

> コンピュータで使える数字の桁数って限定されると思っていたのですが、pythonだと計算できるのでしょうか。 はい、出来ます。 C言語のような低レベルな言語だと限定されてるんですが、仕組みとしてはメモリのひと塊(8bit、16bit、32bit、64bit等)で扱える数が上限ですが、Python(や同じくC等より高級な言語)の場合、必要になったらもっとメモリの塊を追加出来るように設計してるので、必要な分だけの数が計算出来ます。 ただし、本当の上限は、要するに貴方が持ってるPCがメモリをどの程度搭載してるかに左右されます。が、それを全部使い切るのは貴方が想像してる以上のデカさの数でしょうから、気にしなくて結構です。 > また、ものすごく桁数が長い数字とか無理数とかですが、数字(0-9)が表れる頻度を調べることができないかと思いますが、プログラムを組むことは可能でしょうか。円周率でも平方根、ネイピア数とかでもですが。 出来るんじゃないですか? その「数」の計算方法は任せますが、例としては次のように出来ますね。 >>> import math >>> summary = {str(i):0 for i in range(10)} >>> for key in str(math.factorial(10000)):    if key in summary:     summary[key] += 1 >>> summary {'0': 5803, '1': 3241, '2': 3416, '3': 3258, '4': 3341, '5': 3324, '6': 3324, '7': 3335, '8': 3336, '9': 3282} >>>

skmsk1941093
質問者

お礼

回答ありがとうございました。pythonはFortran, Cなどの伝統的なプログラム言語とどこか一線を画するようなところがあるのでしょうか。無理数における数字出現率の傾向を調べるのはこれらの古典的言語でも簡単でしょうか。こういう分野をやったことがないのでコード化を思いつかなったのですが。

関連するQ&A

  • 入力した任意の数の平方根を求める

    C言語を少しずつですが勉強していて、最小値から最小値までの和を求めるのと、入力した数の2乗を求めるプログラムはわりと楽に完成したのですが、平方根を求めるというのができずに困っています。 プログラムの流れを説明すると、 1.どの処理を行うのか、数字+Enterで選択(平方根は、case 3です) 2.その処理を行う 3.結果の出力 です。 平方根の処理は、 scanfで実数を変数に代入→計算を行う関数を実行→結果を出力です。 症状としては、例えば4と入力して処理を実行すると、桁数のすごく大きい数が入力した数として処理され、また平方根も正しく求められていないようです。 (コンパイル時にエラーは出ていません)

  • 無駄に覚えている数字ってどのくらいあります?

    みなさん、無駄に覚えていて2度と使わないだろうって数字、どのくらいありますか? 私の場合、 ・大学時代の学籍番号 (8ケタx1) ・昔勤めていた会社の部署の内線番号 (8ケタx1、7ケタx1) ・以前住んでいたアパートや家の電話番号 (10ケタx2) ・以前住んでいたアパートや家の郵便番号 (3ケタx1,7ケタx1) ・元カノの実家の電話番号 (10ケタx2) ・元カノの携帯番号 (11ケタx1) ・円周率の 3.141以降の数字 (4ケタ(笑)) もっとも円周率最初の3.14も小中学生の勉強以外に使っていない。 高校受験の時はπでそのまま計算していた。 ・2、3、5の平方根(9ケタx3): 高校の時でも2の平方根は√2 と書いていたので、学校の勉強にすら使っていない。 ざっと思い出せるだけで合計105ケタでした。 (もしかして、今住んでいる家の電話番号も携帯電話に登録しているので覚えている必要ないかも...。) あ、もちろん面倒くさかったら桁数は書かなくてけっこうですよ。

  • 有効数字

     有効数字についての質問です。  計算途中で物理定数を使用するとき、測定値に合わせた桁数まで とればいいことはわかるのですが、そのときに最後の桁はもう一つ下の桁を四捨五入して得た数字を採用するのでしょうか。それとも、元のままの数字を使用するのでしょうか。  例えば、測定値が5桁でこれに円周率をかけるとすると、  測定値×3.1415 なのか、それとも  測定値×3.1416 なのかどちらになるのでしょうか。  初歩的な質問で申し訳ありません。よろしくお願いします。

  • 平方数の数字根

    ある新書で「平方数の数字根は1,4,7,9のいずれかである」と書かれていましたが何故そうなるのかは書かれていませんでした。 「」内は正しいのでしょうか。 また、証明法はどのようにするのでしょうか。 自分でも考えてみたのですがまったく分からず、また検索をかけてみたのですが解答は見つかりませんでした。 よろしくお願いします。

  • 平均値をとると有効数字が増える?

    普通の物差しで測った有効数字3ケタのデータ 2.0[mm] 2.1 2.2 2.1 1.9 2.0 があったとします。各データには±0.1程度の誤差があると考えられます。 これらの合計をとると,和の場合の有効数字は末位が最高位のもの合わせるので,今の場合,0.1位までで計算すればよいので 12.3 となりますよね。これをデータ数6で割りますが,この場合の6というのは正確な6であり,どこまでも6.000…で正しい,有効数字は無限大桁と考えられます。割り算の場合,商の有効桁数は有効数字は有効桁数の少ない方に合わせるので 2.05 となり,現データの2ケタよりも多い3ケタになります。これは正しいのですか?

  • エクセルで平方根を計算する方法は?

    ある数の平方根をエクセル上で計算したいのですが,どのような計算式を入力したらよいのでしょうか?

  • python ver3について

    python3を勉強している初心者です。 参考書に載っていた、階乗を計算する例題を変更したいと思っています。 このプログラムを書き換えて、input文で任意の数字nをキーボードから入力して、結果を表示させたいんですが、どうすれば良いでしょうか。 このプログラムでは思う様に動きません。 n=input() def fact(n):   if n ==0:     return 1   return n*fact(n-1) print(fact(n)) input() よろしくお願いいたします。

  • 平方根で何がわかるの?

    「二乗してその数字になる」、とか三角形の計算とかに平方根を良く使いますが、そもそもなぜ平方根を があるのでしょうか?平方根は計算機ですぐ分かるけどそれが分かると何が解ける? 足し算、引き算、掛け算、割り算、分数、その他いろいろありこれらは実用的ですが平方根は何に使うのでしょうか? 平方根を実用的に使った具体例を猫にでもわかるようにご教授ください。お願いします。

  • 有効数字について

    有効数字の揃え方が分かりません。問題文がそろっていればその揃っている桁数より一つ多く計算して、四捨五入でいいのですか。たとえば、 有効数字2桁に揃えるとすると、4.445=4.5でしょうか、それとも4.4でしょうか。 更に分からないのが、問題文がそろっていないときです。問題集には「多いもの(大きいものではなく)にあわせる」と書いてあります。たとえば、2桁で書かれた箇所が3つ、1桁で書かれた箇所が1つなら、2桁でといつする、と言うことです。でもこの考え方だと1桁の箇所と2桁の箇所が同じ数だけ合ったらどうするのでしょうか。 しかし、先生は「有効数字の低いものに合わせる。箇所の数は関係ない。」と言っていた気がします。上の例なら1桁で書かれた箇所は1つだけだが、低いので1桁で統一する、と言うことです。 かなり混乱して分からなくなっているので、皆さん教えてください。

  • 中学数学 平方根で√のついた数字をa√bにするには

    中学数学の平方根と、三平方の定理を勉強中です。 √25=5や√81=9は単純に一桁の数字の2乗なのですぐ計算できます。 √24の時は、2×12=24、12=2×2×3、√24=2×2×2×3、 √24=2√6というやり方で計算しています。 √24の場合は数字が大きくないのでまだいいのですが、 三平方の定理で大きな数字のルートが出てくると、計算にとても時間がかかってしまいます。 √61のような数字が出てきた場合、√61がこれ以上計算できず、√61のままなのか、 a√bのような形に変えられるのか、ぱっと見て自分でわかりません。 √61のような数字は、ぱっと見てa√bになるのかならないのか 短時間で判別する方法はあるのでしょうか? 自分では判別が出来ずに、無駄に2や3で掛け算をして時間が凄くかかります。 それなのに√61はa√bの形に出来ない数字だったりして、時間を無駄にしてしまいます。 √24の、2×12=24、12=2×2×3、√24=2×2×2×3、√24=2√6というやり方も 頭の中でぱぱっと出てこず、解くのに少し時間がかかってしまいます。 簡単で短時間に計算できる方法はあるのでしょうか? 数学が苦手なので、小学生でもわかるくらい易しく教えてください。