• 締切済み

プログラミング js html

ダイアログを利用して1つの整数値を取得する ↓ 入力された1〜整数値までの間の3の倍数だけを合計する

みんなの回答

回答No.5

だいぶたちましたが、検証はできましたでしょうか?

回答No.4

最終、、回答。。 3未満の数も0を加算するようにして対応した、バージョンと 教科書式と、数列式を追加。 <script> /* おまけ関数 */ function rand(min, max) {return parseInt(Math.random() * (max - min) + min);} for (let loop=0;loop<10;loop++) { /* s=開始位置、e=終了位置 */ let s=rand(1,50); let e=s+rand(1,100); /* 教科書式 */ let ans=0; for (let i=s;i<=e;i++) { if ((i%3)==0) ans+=i; } /* 等差式 */ let si=parseInt((s+2)/3); let ei=parseInt(e/3); let ans2=((3*(ei+si))*(ei-si+1))/2; console.log("入力値=" + s + "/" + e +" 答え=" + ans + " / 等差=" + ans2); } </script> ↑を実行すると、画像のような回答を返すので、 ま~あってるでしょ!ってことで。 結構楽しめました!この課題! また、面白い質問待ってます!

回答No.3

とりあえず、完成 3以下は動作しないので、最初に3以上をチェックしてから使用する。 どちらにしても、3未満に、3の倍数はないので、 0になる関係で、答えがなくなる。 <script> /* e=入力値が入るものとする */ let e=14; /* 以下が計算 */ let ei=parseInt(e/3); let ans=((3+(3*ei))*ei)/2; console.log("入力値=" + e); console.log("答え=" + ans); </script> 例えば、1~14をチェックすると 3,6,9,12が対象となればOK 結果、合計30を出力できれば正解! なので、まず、14を3で割り整数部を得る 14/3=4.666666666666667。整数部は「4」となる。 (3+(3*4))*4を求める。 let ans=((3*(ei+1))*ei)/2; でも、数式は同じ 結果 =(3+(3*4))*4 =(3+12)*4 =15*4 =60 が求まるので、最後に2で割り30が答え! これで、1~14までの3の倍数の合計が求まる!。 ポイント let ei=parseInt(e/3); これは、整数部を取り出しているので、割った結果 3=1 4=1 5=1 6=2 3で割る事で桁上がりが起こることを利用しています。 ってことで、どうですか~

回答No.2

いや・・・問題文がおかしい! >入力された1〜 そもそも、整数で3未満は3の倍数はあり得ない。 となると、 for (i=3;i<入力値;i+=3) だけでいいんじゃ・・・

回答No.1

>入力された1〜整数値までの間の3の倍数だけを合計する 逆に考えればOK 3の倍数は、3で割り算してあまりが出ない数です。 余りは % で簡単に求められるので、 これが0(つまりあまりなし)になった数を、 合計すればOKです。

関連するQ&A