- ベストアンサー
javascriptのプログラムについての質問です。
javascriptのプログラムについての質問です。 1掛ける6から始めてその後ひたすら6を掛けていき30桁になった時点で終わらせるというプログラムを作りたいです。 参考書を読み始めたばかりの初心者ですのでできるだけ砕いて説明いただけると幸いです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1様が回答されているように30桁までだと少々面倒ですが、とりあえず、基本的な考え方の一例として… var val = 1; // 計算値の初期値 var mul = 6; // 乗数 var max = 1E10; // 打切り数(10進10桁) while (val < max) { // 打切数以下なら循環 val *= mul; document.write( val + '<br>'); // 計算値を表示 } もちろん、方法は他にもたくさんあることでしょう。 有効桁数オーバーへの対処はしていません。
その他の回答 (4)
- babu_baboo
- ベストアンサー率51% (268/525)
あけおめことよろ(たまに出没予定) がんばれ若人よ!? けっして、こんな汚い書き方をしないようにね きっと誰かが洗練されたコードを書くかもしれない! <!DOCTYPE html> <title>Test</title> <script type="text/javascript"> function hoge( n0, n1 ) { var m = (new String( n0 )).split('').reverse(); var f = 0, c = 0, r = '', o, p; while( o = m[ c++ ] ) { o = parseInt( o, 10 ) * n1 + f; r = (o%10)+r; f = (o/10)|0; } return f?f+r:r; } var a = '1'; for( var i=1; i<200; i++) { a = hoge( a, 6 ); document.write( i + "=" + a + '<br>' ); } </script>
お礼
ありがとうございます。 まだ学習の済んでいない所もあり全ては理解できませんが分かる範囲で参考にさせていただきます。
- junkUser
- ベストアンサー率56% (218/384)
例題の目的が不明ですが、もっと簡単に回答するなら対数を使うのが良いと思います。 // 10を底とする6の対数を取得する var x = Math.log(6) / Math.LN10; // 30桁でかつ、6の乗数で 100000....00 の数字になることはありえないので // (6は3の倍数なので各位の数字の合計が3の倍数になる) var n = parseInt(30 / x); WScript.Echo (n);
お礼
思いつきで出してた感じなのでなんともいえません;; 対数はまだ学習できていないのですが考え方として参考にさせてもらいます。 わざわざありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
まずは「javascript 多倍長」でぐぐる
- junkUser
- ベストアンサー率56% (218/384)
整数は2の53乗(10進数で16ケタ)までしか行けないですよ。 少しハードルが高いんじゃないでしょうか。 できないこともないですが
お礼
ありがとうございます。 学習範囲内で理解できるコードでした。 参考にさせていただきます。