|

楼主 |
发表于 2019-6-7 15:42
|
显示全部楼层
SELECT 1
USE F:\k生素数\素数式至23.dbf ALIAS 素数23
SELECT 2
USE F:\k生素数\最密k生素数的间距.dbf ALIAS 最密k间距
kssj=SECONDS() &&取出开始时间
FOR I=10 TO 12
@ 5,12 say I
SELECT 1
go top
FOR J=1 TO 36495360-I+1
PUBLIC A
A=素数式23
JL1=RECNO()
skip I-1
PUBLIC B
B=素数式23
GO JL1+1
PUBLIC C
C=素数式23
skip I-1
PUBLIC D
D=素数式23
GO I+2
PUBLIC E
E=素数式23
SKIP I-1
PUBLIC F
F=素数式23
H=B-A
G=D-C
K=F-E
IF G>H
L=H
ELSE
L=G
ENDIF
IF K>L
L=L
ELSE
L=K
ENDIF
GO J+1
ENDFOR
IF J>36495360-I+1
SELECT 2
APPEND BLANK
REPLACE k值 WITH I
REPLACE 最短间距 WITH L
ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这个程序不对,运算结果当k=10,11,12时,运算结果是负2.23亿多得数,是倒数的几个值,这说明后续的值为0,已经超出记录范围。
另外最主要的是,程序开始的A,B,C,D和G,H应在内循环以外,只调入一个结果L值就可以了,然后逐个与新值比较完成内循环。 |
|