- ベストアンサー
BASIC言語で整数を素因数分解するプログラム
- BASIC言語を使用して整数を素因数分解するプログラムを教えてください。
- プログラムの実行結果が表示されない場合、間違い箇所を教えてください。
- 使用するコマンドはbwbasicです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス ・『bwbasic』ってフリーソフトですか? 昔の N88-BASIC を思い出しますね。特に行番号があるので。 >結果が表示されません。間違い箇所を教えてください ↑これって全く表示されないのか?もしそうなら無限ループしていないか。 ・もう一度、素因数分解のアルゴリズムを紙にでも書いて整理すべきです。 私ならば次のようにプログラミングします。 (1)object に数を入力する。 (2)sosu という名前の素数を用意して 2 から順番にステップアップします。→DO WHILE などを使う。 (3)sosu で割ったあまりが、0 以外なら sosu カウンタを +1 にします。 このときに、PRINT sosu;"^";kazu を表示します。 (4)object の数を sosu で割って 1 になったら処理を終了します。→ここを間違うと無限ループするよ。 (5)(1)へ戻る。 ↑この方法をプログラミングすればよいのです。 ・間違いの箇所を探るよりも、もう一度プログラミングしなおした方が早い気がします。 下にサンプルを載せます。 サンプル: 100 '2 以上を入力 110 DO WHILE object <= 2 120 PRINT "N? (N>2)" 130 INPUT object 140 LOOP 150 '素因数分解を開始 160 sosu = 2 170 PRINT "soinsubunkai suruto" 180 DO WHILE object <> 1 190 kazu = 0 200 WHILE (object MOD sosu)=0 210 object = object / sosu 220 kazu = kazu + 1 230 WEND 240 IF kazu>0 THEN 250 PRINT sosu;"^";kazu 260 IF object>1 THEN 270 PRINT "*" 280 END IF 290 END IF 300 sosu = sosu + 1 310 LOOP 間違い箇所: >260 object=0 ↑object って素因数分解する『数』ですよね。0 を代入していいの?入力した意味ないよ。 >420 ELSE ↑無駄な ELSE が存在する。削除すべきだ。 ・サンプルを試して見て下さい。→私は試す環境を持っていないので確認して下さい。 ・以上。参考に!
お礼
さっそくのアドバイスありがとうございます 明日学校へ行って、試してみたいと思います