不具合の原因がわかりました。
SQR() 関数の結果判定に問題が有ったようです。
PRIME98.BAS
320 *START
330 TM$=TIME$
340 I=2:GOSUB *PRINT1
350 FOR I=3 TO N '
360 i2=i/2:i3=int(i/2):IF i2=i3 THEN *EXIT2 ' 合成数
370 j2=int(SQR(I)) '
380 FOR J=3 TO j2 STEP 2 ' 偶数をスキップ
390 I2=I/J:I3=INT(I/J):IF I2=I3 THEN *EXIT2 ' 合成数
400 NEXT J
410 IF J>SQR(I)+.0001 THEN GOSUB *PRINT1 '★
420 *EXIT2
430 NEXT I
440 I=I-1
このように、SQR() に +0.0001 を足したら問題が解消されました。
計算精度の問題か、最小桁が切り捨てられているのでしょうか。
いくつ足せばいいのか桁を変えて試してみました。
410 IF J>SQR(I)+.000001 THEN GOSUB *PRINT1 ng
Number.10000 0: 0:29 Prime Number = 1233
69 5041 6241 9409 ng
410 IF J>SQR(I)+.00001 THEN GOSUB *PRINT1 ng
Number.10000 0: 0:30 Prime Number = 1232
5041 6241 9409 ng
410 IF J>SQR(I)+.0001 THEN GOSUB *PRINT1 ok
Number.100000 0: 2:29 Prime Number = 9592
どうも N88BASIC の問題のような気がしますが、実機でどうなるか知りたいですね。