|
* 以大定小选配素数对
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\vfp温习\L6三生素数24合成结果表大小论.DBF ALIAS 素数对 &&素数对表结构:偶数、统计
SELECT 2
USE D:\vfp温习\L6三生素数24表.DBF EXCL ALIAS 素数表
kssj=SECONDS()
FOR n=300001 to 400000
@ 3,6 say n
FOR m=28 TO 40 STEP 6
X=m+(n-1)*30
Y=X/2 &&求出偶数的中值
SELECT 素数表
LOCATE FOR 三生24中>X
DO CASE
CASE EOF()
GO Bottom
CASE 三生24中>X
SKIP -1
ENDCASE
xjl=1
djl=RECNO()
t=.T.
DO WHILE t
dss=三生24中
GO xjl
xss=三生24中
&&放在这里比较合适,这里原来显示小素数的值,去掉了。
IF xss<Y OR dss>Y &&判断跳出语句如果放在后面,有时出现一个重复素数对
t=.T.
ELSE
t=.F. &&跳出命令
ENDIF &&结束判断
DO CASE
CASE xss+dss>X
GO djl
SKIP -1
djl=RECNO()
CASE xss+dss=X
EXIT
CASE xss+dss<X
GO xjl
SKIP
xjl=RECNO()
GO djl
ENDCASE
ENDDO
IF xss>=Y OR dss<=Y
SELECT 素数对
APPEND BLANK
REPLACE 偶数 WITH X
ENDIF
ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这个程序明显快于其他程序,在寻找不能被合成的数中,发挥了它的长处,绝招。 |
|