|
> No.4300[元記事へ]
白石和夫さんへのお返事です。
> ご報告ありがとうございました。
お世話になります。
> 2回目は
> 88951 16095179 0
> となって異常となる位置は不確定なようです。
別programでテストしました。 結果
異常となる位置は不確定 ?
出力ファイル容量も不定
テスト プログラム
--------------------------------
LET t0=TIME
LET k=100000007
LET k2=5761456
DIM GT(k2)
CALL prime(k,k2,GT)
FOR i=1 TO k2-1
LET M=GT(i)
PRINT M
NEXT i
LET TM=TIME-t0
PRINT USING"####." & REPEAT$("#",2):TM;
PRINT "秒"
END
EXTERNAL SUB prime(k,k2,GT())
!エラトステネスの篩
LET Fu=10007
LET Fm=1230
DIM P(Fu)
DIM A(Fm) !素数
MAT P=ZER
MAT A=ZER
LET A(1)=2
LET H1=1
FOR I=3 TO SQR(Fu) STEP 2
IF P(I)=0 THEN
FOR J=I*I TO Fu STEP I
LET P(J)=1
NEXT J
END IF
NEXT I
FOR I=3 TO Fu STEP 2
IF P(I)=0 THEN
LET H1=H1+1
LET A(H1)=I
END IF
NEXT I
LET Q=6
LET k7=k !篩の計算範囲
LET k5=IP(k7/Q)+1
DIM Au(k5),Av(k5)
MAT Au = ZER !(6*n-1)
MAT Av = ZER !(6*n+1)
FOR n=3 TO Fm
LET Pu=A(n)
IF MOD(Pu+1,Q)=0 THEN !(6*n-1)
LET ru=(Pu+1)/Q
FOR i=1 TO k5
IF Pu*i+ru>k5 THEN EXIT FOR
LET Au(Pu*i+ru)=1
NEXT i
END IF
IF MOD(Pu-1,Q)=0 THEN
LET ru=(Pu-1)/Q
FOR i=1 TO k5
IF Pu*i-ru>k5 THEN EXIT FOR
LET Au(Pu*i-ru)=1
NEXT i
END IF
IF MOD(Pu+1,Q)=0 THEN !(6*n+1)
LET ru=(Pu+1)/Q
FOR i=1 TO k5
IF Pu*i-ru>k5 THEN EXIT FOR
LET Av(Pu*i-ru)=1
NEXT i
END IF
IF MOD(Pu-1,Q)=0 THEN
LET ru=(Pu-1)/Q
FOR i=1 TO k5
IF Pu*i+ru>k5 THEN EXIT FOR
LET Av(Pu*i+ru)=1
NEXT i
END IF
NEXT n
LET GT(1)=2
LET GT(2)=3
LET cz=2
FOR n=1 TO k5
IF 6*n-1>k7 THEN GOTO 100
IF Au(n)=0 THEN
LET cz=cz+1
LET GT(cz)=6*n-1
END IF
100 IF 6*n+1>k7 THEN EXIT FOR
IF Av(n)=0 THEN
LET cz=cz+1
LET GT(cz)=6*n+1
END IF
NEXT n
END SUB
--------------------------------
出力テキストファイル確認用 プログラム
--------------------------------
OPTION ARITHMETIC NATIVE
LET t0=TIME
LET k6=1000000
DIM A(k6),B(k6),C(k6)
OPEN #1:NAME "prime1E_84.TXT",ACCESS INPUT
OPEN #2:NAME "prime_1E8xv.TXT",ACCESS INPUT
FOR i=1 TO k6
INPUT #1: A(i)
INPUT #2: B(i)
NEXT i
CLOSE #1
CLOSE #2
PRINT A(10000);B(10000)
PRINT A(k6);B(k6)
MAT C=B-A
FOR n=1 TO k6
IF C(n)<>0 THEN PRINT n;A(n);B(n)
NEXT n
LET TM=TIME-t0
PRINT USING"####." & REPEAT$("#",2):TM;
PRINT "秒"
END
--------------------------------
計算結果
【1回目】
テキスト サイズ 69,707KB
104729 104729
13541903 15485863
17479 154159 193789
17480 154181 193793
17481 154183 193799
17482 154211 193811
17483 154213 193813
【2回目】
テキスト サイズ 70,410KB
104729 104729
13551851 15485863
17479 154159 193789
17480 154181 193793
17481 154183 193799
17482 154211 193811
17483 154213 193813
------------------------------
WRITE #1:M
問題ナシです。
http://blogs.yahoo.co.jp/donald_stinger
|
|