✨ ベストアンサー ✨
AとNの最大公約数をユークリッド互除法で求めているプログラムだと思います。
20行目ですが、
最大公約数を求めるとき、与えられた数の回数分、ユークリッド互除法で割り算する必要がなく、
せめて、√N回実行すれば、答えが求まるからだと思います。
40行目に関しては、
FORで回している回数分、PRINT関数を呼び出すと処理が多くなってしまうので、
せめて、FORで結果がわかった最後に、PRINT関数で結果を表示させれば良い。
要するに、PRINTをFORの外側に出してあげればOKだと思います。
大変申し訳ありません。はやとちりでした。
最大公約数を求めているのではなくて、おそらくAが素数であるかどうかを調べるプログラムだと思います。
先に回答されていた方の画像を見て、実験してみてそう判断しました。
INT(A/N)は、INT関数といってA/Nの整数部だけを拾ってくる関数です。
INT関数に√11を入れた場合は、INT(√11)=3となります。
また、30行目の式にはA/√11となりますが、ここは私もちょっとよくわかりません。
PRINT関数をFORの外に出すというのは、適切だと思っていますが、具体的にどこに置けばよいか、
今プログラムを追っているところなので、具体的にはわかりません。
再度、考えて改めて投稿しようと思います。すみませんでした。
いえいえ、!今ので9割分かりました☆同じく、INT関数がnの後ろにくるのは私も問題の意図がわかりませんでした、、
40行目を書けという問題はおそらく出ないのでいつか分かったら教えて頂ければ嬉しいです☺️
改めて。A=11としたとき、
20行目は、SQR(A)=√11となりますが、SQRの関数の仕様説明がないので3なのか、3.316...なのかは不明です。
ただ、素数判定するだけのプログラムなので、A=11としたとき、
N=1から、1,2,3,4,5,6,7,8,9,10,11まで計算の対象にするのは、効率が良くないです。
A=11だとしたら、Nを1,2,3まで計算すれば、計算の節約になるのは、おそらく了解済みだと思います。
次に、40行目なんですが、PRINT関数をFORの外に置くよりも、30行目で計算結果が0とわかった時点で、
結果を返して終了する RETURN Nが正解だと思います。
ただ、いずれにしても何の言語を扱っているか不明なので、ここまでで精一杯です。
久々に、おもしろい問題、ありがとうございました。
return n なるほどです!自分が思っていたより深い問題でした、、言語はおそらくBASICです、💦
おかげさまで、もうこの問題でわからないことはなくなりました!
ありがとうございます😭テスト頑張ります
なるほど、最大公約数を求めているんですね!まずそこを理解してしてませんでした、、ありがとうございます
√N回ということは30行めの式には例えば√11を入れた場合、表示されるのは何になるのでしょうか、?
それと外側というのはどこでしょうか、?
質問を重ねてすみません、!でもだいぶ分かってきました。助かります。