• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BASIC言語で整数を素因数分解するプログラムを教えてください)

BASIC言語で整数を素因数分解するプログラム

このQ&Aのポイント
  • BASIC言語を使用して整数を素因数分解するプログラムを教えてください。
  • プログラムの実行結果が表示されない場合、間違い箇所を教えてください。
  • 使用するコマンドはbwbasicです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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 が存在する。削除すべきだ。 ・サンプルを試して見て下さい。→私は試す環境を持っていないので確認して下さい。 ・以上。参考に!

kuma_apple
質問者

お礼

さっそくのアドバイスありがとうございます 明日学校へ行って、試してみたいと思います