|

楼主 |
发表于 2019-4-20 09:11
|
显示全部楼层
* 以大定小选配素数对
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE F:\visualfoxpro项目\四生素数对.DBF ALIAS 素数对 &&素数对表结构:偶数、统计
IF RECCOUNT()>0
??CHR(7)
ts=MESSAGEBOX("清空“素数对”表吗?",4+48+256,"提示窗口")
IF ts=6
ZAP
ENDIF
ENDIF
SELECT 2
USE F:\visualfoxpro项目\四生素数表.DBF EXCL ALIAS 素数表
SELECT 3
USE f:\visualfoxpro项目\四生素数合成参照表.DBF ALIAS 参照表
kssj=SECONDS()
for n=620001 to 720000
@ 3,6 say n
SELECT 参照表
go 1
FOR M=1 TO 5
@ 4,8 say 四合元
X=四合元+(n-1)*210
Y=X/2 &&求出偶数的中值
SELECT 素数表
LOCATE FOR 四素>X
DO CASE
CASE EOF()
GO Bottom
CASE 四素>X
SKIP -1
ENDCASE
xjl=1
djl=RECNO()
t=.T.
DO WHILE t
dss=四素
GO xjl
xss=四素
@ 10,10 SAY xss &&放在这里比较合适
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
SELECT 参照表
skip
ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
CLOSE ALL
这是以大定小素数配对程序,它是运算最快的,没有更好的方法再继续提高运算速度了。 |
|