投稿者:たろさ
投稿日:2021年 9月15日(水)18時53分24秒
|
|
|
! 6n±1篩 Ver.2
OPTION ARITHMETIC NATIVE !2進モード
LET t0=TIME
LET k=1E8 !1E7 9999991 素数 (664579th)
LET k1=IP(k/6) !1E8 99999989 素数 (5761455th)
LET k2=IP(SQR(k1))!5E8 499999993 素数 (26355867th)
DIM A5(k1),A7(k1)
MAT A5=ZER
MAT A7=ZER
LET P1=5
LET C1=1
DO
FOR n=1 TO k1
LET P6=P1*n+C1
IF P6 > k1 THEN EXIT FOR
LET A5(P6)=1
NEXT n
FOR n=1 TO k1
LET P6=P1*n-C1
IF P6 > k1 THEN EXIT FOR
LET A7(P6)=1
NEXT n
LET P1=P1+6
LET C1=C1+1
IF P1 >k1 THEN EXIT DO
LOOP
LET P1=7
LET C1=1
DO
FOR n=1 TO k1
LET P6=P1*n+C1
IF P6 > k1 THEN EXIT FOR
LET A7(P6)=1
NEXT n
FOR n=1 TO k1
LET P6=P1*n-C1
IF P6 > k1 THEN EXIT FOR
LET A5(P6)=1
NEXT n
LET P1=P1+6
LET C1=C1+1
IF P1 >k1 THEN EXIT DO
LOOP
PRINT "2"
PRINT "3"
LET c=2
FOR n=1 TO k1
LET P5=6*n-1
LET P7=6*n+1
IF A5(n)=0 THEN
LET c=c+1
IF k-1000<P5 THEN PRINT P5
END IF
IF A7(n)=0 THEN
LET c=c+1
IF k-1000<P7 THEN PRINT P7
END IF
NEXT n
PRINT c
LET TM=TIME-t0
PRINT TM;"秒"
END
計算結果
2
3
99999043
99999073
99999077
99999079
99999089
99999103
99999113
99999131
99999157
99999167
99999187
99999217
途中省略
99999931
99999941
99999959
99999971
99999989
5761455
4.438000000009 秒
BASIC Accelerator Ver. 1.2.0.5 (2020.03.31)
mod(6n+3,3)=0 は正しいと思うので
6n-1,6n+1 以外から素数は出ません。
|
|
|