【問題】Nが素数 (prime) であるか判定するプログラム
設問1で確認したように、プログラム1はNが素数であるか正しく判定することができます。しかし、プログラム1にはいくらか無駄があります。
その1つとして、実際には2〜N-1の自然数で割り切れるかどうか確かめなくてもNが素数であるか判定できることがあげられます。素数の性質1から、2〜の自然数で割りきれるかどうか確かめるだけでよいのです。
そこで、プログラム1を書き換え、プログラム2としました。
[プログラム2]
10 INPUT PROMPT "n=":N 20 FOR I=2 TO ______ 30 IF ________________ THEN 40 PRINT N;"is not a prime." 50 GOTO 90 60 END IF 70 NEXT I 80 PRINT N;"is a prime." 90 END
[設問2]
空欄を埋めてプログラム2を完成させなさい。その後、実行してプログラム1と同様に正しく動作することを確認しなさい。ただし、30行目にはプログラム1と同じ条件文が入ります。
[解答]
10 INPUT PROMPT "n=":N 20 FOR I=2 TO SQR(N) 30 IF N-I*INT(N/I)=0 THEN 40 PRINT N;"is not a prime." 50 GOTO 90 60 END IF 70 NEXT I 80 PRINT N;"is a prime." 90 END