質問<3238>2006/6/11
プログラムの問題です。お願いします。 次の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との互換性もあるみたいなんで、バッチ シでした。ハッキリ言うとコピペ目論んだんですが、キチンと動作してくれました。素晴 らしい。 是非とも試してみてください。 >その出力の意味を説明し、このプログラムの目的を示せ。 試してみれば分かりますが、多分素因数分解の為のプログラムです。