「A=1を何倍ずつしていくと5回目に10000を超えるか」
という問いに対するプログラムを作りたいのですが、以下の様に書いたら「5」と表示されてしまい、上手く行きませんでした。
まず考え方としては、nの5乗が10000を超える時のnの値を出力する為に、for分の方ではiが1〜5までnのべき乗を繰り返すプログラムを作成し、それにwhile文で「Aが10000以下の条件」をつけ、nの値を+1ずつ増やして判定し続け、最終的にAが10000を超えた時点でのnを出力するプログラム書いたつもりです。
どこが間違っていて何を訂正すれば良いのかヒントやアドバイスなどをご教授いただければ幸いです。
お願いいたします。
public static void main(String[] args) { int n=1 ; //n^5の底を1としてスタート int A=1;//A=1からスタート while(A<=10000) { for(int i=1;i<=5; i++) { A=A*n;//このfor文でn^iをiが1〜5まで5回繰り返す } n++;//for文で繰り返したn^5をn=1から始めて+1し続けて、Aが10000以下になるか判定 } System.out.println(n);//n^5の底であるnの値を出力 }}
n を増やしても A の値はそのままですが、大丈夫でしょうか?
回答ありがとうございます。
そうなのですか…
何故Aの値はそのままになってしまうのでしょうか?
このままではfor文の中身がwhile文と連結(?)してないのでしょうか?
アドバイスいただければ幸いです。
A をどこで 1 にするかの問題です。
ご指摘の通り、while文に
A=1とを書いたところ、7と表示されました。
実行結果自体は合ってると思うのですが、コードはこちらで合ってるのでしょうか?…
public static void main(String[] args) {
int n=1 ; //n^5の底を1としてスタート
int A=0 ;
while(A<=10000) {
n ++;
A=1;
for(int i=1;i<=5; i++) {
A=A*n;//このfor文でn^iをiが1〜5まで5回繰り返す
}
}
System.out.println(n);//n^5の底であるnの値を出力
}}
無事動作確認が完了出来ました。
アドバイスありがとうございました。
回答2件
あなたの回答
tips
プレビュー