任意の 0でない自然数 n をとり、 n が偶数の場合は n を2で割り、 n が奇数の場合は n に 3をかけて 1を足す。」という操作繰り返すと、有限回で1に到達するという 「コラッツの問題」。これを 1,000 から 5,000の任意自然数について確かめるプログラム作成したいんですがうまくいきません。
ちなみに「1,000から5000までの自然数(n)を入力して下さい」というダイアログボックスを表示した後、
alertでそれ以外の数字を入力してしまった場合は「入力した自然数(n)が間違っています。」を表示します。
逆に入力した数字が条件内であれば「入力した自然数(n)は[n]です。」と表示し改行した後1に達するまで「n=[n]は偶数:[n]/2=[n/2]」or「n=[n]は奇数:[n]3+1=[n3+1]」を計算し表示し続けるものになります。
一応、自分が書いたプログラムはこんな感じです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>コラッツ</title> </head> <body> <script> var i = prompt("1,000から5,000までの自然数(n)を入力して下さい。",""); if(i<1000||5000<i){ var i = alert("入力した自然数(n)が間違ってます。"); }else{ document.write("<p>入力した自然数(n)は" + i + " です。</p>"); while(i!=0){ if(i%2==0){ document.write("<p>n=" + i + "は偶数:" + i + "/2=" + i/2 +"</p> "); }else{ document.write("<p>n=" + i + "は奇数:" + i + "*3+1=" + i*3+1 +"</p> "); } return i; } } </script> </body> </html>
よろしくお願いします。
<追記>
while文のループをnが1に達したら抜け出せるようにしたいのですがどうしたらいいのでしょうか?
回答3件
あなたの回答
tips
プレビュー