![]() |
#52
独木星空2025-04-20 09:00
SELECT 1
USE D:\素数式系数\素数式23.DBF ALIAS 素数式23 SELECT 2 USE D:\素数式系数\素数表万.DBF ALIAS 素数表 SELECT 3 USE D:\素数式系数\素数式47.DBF ALIAS 素数式47 kssj=SECONDS() &&取出开始时间 FOR i=1 TO 1 SELECT 1 GO 1 FOR k=1 TO 1635877 @22,20 SAY k ly23=sss23 && bpz=ly23+(i-1)*223092870 &&给被判断值置数,以循环值做变量。 && Kf=INT(SQRT(bpz)) &&求出被判断值的开方根 && SELECT 2 &&打开素数表 && LOCATE FOR 素数>=kf &&根据开方根,查找最大素数 && DO CASE && CASE EOF() &&如果超出素数表最后一条记录 && GO BOTTOM && CASE 素数>kf &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内 && SKIP -1 && ENDCASE && SSS=RECNO() &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置) SELECT 2 GO 10 &&从第二条记录开始读取素数(3) FOR j=1 TO 6 ys=MOD(ly23,素数) &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号 IF ys=0 && OR ys=4 OR ys=6 OR ys=10 OR ys=12 OR ys=16 OR ys=MOD(36,素数) OR ys=MOD(38,素数) OR ys=MOD(120,素数) OR ys=MOD(122,素数) OR ys=MOD(126,素数) OR ys=MOD(128,素数) EXIT &&因为符合条件,则做完相应工作后跳出内循环 ENDIF SKIP &&素数表指针向下移动一个 ENDFOR IF j>5 SELECT 3 &&打开保存求解结果的信息表 APPEND BLANK &&增加一条空记录 REPLACE sss47 WITH ly23 &&将被判断值保存到被判断值字段中(被判断值数据栏) ENDIF SELECT 1 SKIP ENDFOR ENDFOR =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示") 之前筛选到307已经过度了,这次筛选到47为止。 |
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg20.DBF ALIAS 二生素数表
kssj=SECONDS()
SELECT 1
GO 1
For i=1 to 50847534
@ 5,12 say i
SELECT 1 &&打开盛放素数式的表
jl=recno()
PUBLIC A
A=素数
SKIP 1
PUBLIC B
B=素数
cj1=B-A &&求前后两个素数的差值
IF cj1=20
SELECT 2
APPEND BLANK &&增加一条空记录
REPLACE ers20 WITH A+10 &&将N值付给素数式
ENDIF
SELECT 1
GO jl+1
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")