質問<3238>2006/6/11
from=KAI
「プログラム」


プログラムの問題です。お願いします。
次のBASICプログラムにn=360を入力するとなにが出力されるか調べよ。
その出力の意味を説明し、このプログラムの目的を示せ。

100 PRINT "自然数をn入力してください:";
105 INPUT n
110 PRINT "n=";
120 DO WHILE n>=4 AND MOD(n,2)=0
130   LET n=n/2
140   PRINT "2*";
150 LOOP
160 LET d=3
170 LET q=n/d
180 DO WHILE(q>=d)
190   IF MOD(n,d)=0 THEN
200      PRINT d;"*";
210      LET n=q
220   ELSE
230      LET d=d+2
240   END IF
250   LET q=n/d
260 LOOP
270 PRINT n
280 END

です。
高校でコンピュータを習ってないので、どうこたえたらいいのかもわからないので、
よろしくお願いします。

(※管理人:大なり、小なりの半角は、タグと間違えて誤作動しますので、全角に
      してありますから、注意して下さい。)

★完全解答希望★

お便り2006/6/16
from=亀田馬志


いや、ワタシも丸っきりプログラムは分かりません。勉強はしてるんですけどねえ・・・・・・。

ところで、この「高校数学の窓」ではワリと現エンジニアの人達とかプログラマの人達も出
入りしているようなんで、本来はこのテの質問はすぐレス付く筈なんですよ。
しかし誰もレスしない・・・・・・。
何でだろ?とか思ったんですが、ハッキリ言うとこの問題

「かなり古過ぎる」

んでしょうね(笑)。ヘタすれば80年代の問題なんですよ(笑)。
現時点メジャーなBASICプログラミング言語なんかではMicrosoftのVisual Basicであると
か、もしくはMicrosoft Officeなんかのマクロ言語であるVisual Basic for Application
なんかが有名なんですが、知ってる範囲で言うと文法が同じBASICにしてもあまりに違い
過ぎます(笑)。
端的に言うと、

100・・・
105・・・
110・・・

なんてまず数字表示が現在のBASICにはありません(笑)。これじゃあまるでNEC PC-6000と
かPC-8000とかPC-8800の付属BASIC(当時のパソコンではROMにBASICが搭載されていた)で
す(苦笑)。
(若いWindows世代の連中は知らんだろうなあ・笑)
あるいは任天堂のファミコンのファミリーベーシックとか(笑)。
(これも若い連中は知らんだろ・笑)

さて、そうなると、このコードを打ち込んで動かすのは至難のワザです。
Microsoft ExcelのMacroに移植するのも一苦労でしょう。僕が技術が無いのもあるんです
が、例えば

DO~LOOP

構文なんて見たことないです(笑)。
今ポピュラーなのは恐らく

for~

構文なんですよね(笑)。コレはキツい。キツ過ぎるでしょう(笑)。翻訳もままなりませ
ん(苦笑)。

とか諦めかけてたんですが、ありがたいですねえ。古いBASIC互換のフリーウェアがある
んです。エライなあ、作った人はエラ過ぎる(笑)。
そのフリーBASICとはコレです。

十進BASIC ver. 5.9.0 for Windows

これは昔懐かしいNECのPCシリーズなんかのBASICとの互換性もあるみたいなんで、バッチ
シでした。ハッキリ言うとコピペ目論んだんですが、キチンと動作してくれました。素晴
らしい。
是非とも試してみてください。

>その出力の意味を説明し、このプログラムの目的を示せ。

試してみれば分かりますが、多分素因数分解の為のプログラムです。