回复 45楼 laowan001
CLEAR
SELECT 1
USE D:\标记法\数据源表.DBF ALIAS 数据源
SELECT 2
USE D:\标记法\素数表5万.DBF ALIAS 素数表参
SELECT 3
USE D:\标记法\数据表a.DBF ALIAS 数据a
SELECT 5
USE D:\标记法\素数表结果1.DBF ALIAS 素数表果
kssj=SECONDS()
FOR i=11 TO 12
@12,10 SAY i
SELECT 3
DELETE ALL &&因为此表将写入新的数据,所以提前清空数据,即记录条值
PACK
SELECT 1
GO 1
FOR j=1 TO 1658880
sss=素数式
dclz=sss+(i-1)*9699690 &&dclz是待处理值
SELECT 3
APPEND BLANK
REPLACE 数据1 WITH dclz
SELECT 1
SKIP
ENDFOR
SELECT 3
GO 1658880
bpz=数据1
Kf=INT(SQRT(bpz))
GO 1
SELECT 2
GO 1
COUNT ALL FOR 素参<=kf TO jlh && jlh=RECNO()
xhcs=jlh-8 &&xhcs是循环次数的简写(第一个字母代替)
SELECT 2
GO 9
FOR k=1 TO xhcs
sc=素参
SELECT 3
jlts1=RECCOUNT() &&把数据a表中的记录条总数赋给变量:jlts1
GO 1
FOR h1=1 to jlts1
sj1=数据1
ys1=MOD(sj1,sc)
IF ys1=0
SELECT 3
DELETE next 1
ENDIF
SELECT 3
SKIP
ENDFOR
SELECT 3
PACK
SELECT 2
skip
ENDFOR
INSERT INTO 素数表果 (素数) SELECT 数据1 FROM 数据a
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示") 计算11,12两个区间用时27分58:53秒
这次只是把存表部分改动了一下(即程序最后部分),开始部分没有修改成功,不是别名被占用,就是找不到列“素数式”(英文符号单引号)。
主要循环体还没有用数组代替在内存中运算(或许这是提速的关键)。