注册 登录
编程论坛 VFP论坛

简单的筛选二生素数程序

独木星空 发布于 2025-03-18 08:13, 2184 次点击
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,"运行时间提示")
199 回复
#2
csyx2025-03-18 09:58
百度了一下,大概就是孪生数吧,如果是找两两相差定值的孪生数,一条语句就足够了

*-- 创建100以内的素数表
Create cursor pr(rowid I, val I)
pr = '2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97'
For ii = 1 to ALines(ap, pr, 1+4, ',')
    Insert into pr values (ii, Val(ap[ii]))
EndFor

*-- 找出相差 n 的素数对
n = 2
Select a.val, b.val from pr a ;
    inner join pr b on a.rowid = b.rowid - 1 ;
    where a.val + n == b.val

#3
独木星空2025-03-18 11:40
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 2
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=20
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE sss20 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,"运行时间提示")
照猫画虎,简单修改
#4
独木星空2025-03-18 11:42
回复 2楼 csyx
一个字,牛,简明扼要。
#5
独木星空2025-03-18 14:24
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 3
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=20
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ssss20 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,"运行时间提示")
简单 复制品
#6
独木星空2025-03-18 17:04
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 4
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=20
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE wss20 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,"运行时间提示")
仍就是简单的复制品  
#7
独木星空2025-03-18 17:05
当然它们各自完成的任务不同
#8
独木星空2025-03-18 23:13
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 5
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=20
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE lss20 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,"运行时间提示")
#9
独木星空2025-03-19 12:23
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg22.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=22
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ers22 WITH A+11   &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#10
独木星空2025-03-19 18:20
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\四生素数jg22.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 3
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=22
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ssss22 WITH A+11  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
正在制作10亿内的二生素数数据(从2-30的间距)
#11
独木星空2025-03-19 23:51
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\五生素数jg22.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 4
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=22
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE wss22 WITH A+11  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#12
独木星空2025-03-19 23:52
不存在七生素数总跨距为22的、
#13
独木星空2025-03-20 19:27
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\三生素数jg26.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 2
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=26
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE sss26 WITH A+13    &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#14
独木星空2025-03-21 05:54
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\四生素数jg26.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 3
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=26
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ssss26 WITH A+13 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#15
独木星空2025-03-21 09:29
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\五生素数jg26.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 4
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=26
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE wss26 WITH A+13  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#16
独木星空2025-03-21 12:49
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\六生素数jg26.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 5
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=26
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE lss26 WITH A+13  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#17
独木星空2025-03-21 16:16
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\七生素数jg26.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 6
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=26
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE qss26 WITH A+13  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#18
独木星空2025-03-21 23:00
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\八生素数jg26.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 7
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=26
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE bss26 WITH A+13  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#19
独木星空2025-03-22 09:36
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg28.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=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ers28 WITH A+14  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#20
独木星空2025-03-22 13:31
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\三生素数jg28.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 2
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE sss28 WITH A+14    &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#21
独木星空2025-03-22 19:03
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\四生素数jg28.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 3
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ssss28 WITH A+14 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#22
独木星空2025-03-23 00:59
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\五生素数jg28.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 4
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE wss28 WITH A+14  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#23
独木星空2025-03-23 10:00
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\六生素数jg28.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 5
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE lss28 WITH A+14 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#24
独木星空2025-03-23 13:08
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\七生素数jg28.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 6
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE qss28 WITH A+14  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#25
独木星空2025-03-23 18:29
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\八生素数jg28.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 7
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=28
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE bss28 WITH A+14  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#26
独木星空2025-03-23 23:44
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg30.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=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ers30 WITH A+15  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#27
laowan0012025-03-24 09:07
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg30.DBF ALIAS 二生素数表
kssj=SECONDS()
SELECT  1    && 等价于  SELECT 素数表
GO 1

如果都用SELECT 1这样的方法,那就没必要在打开表的时候指定别名了
#28
trial032025-03-24 09:37
学习了。 谢谢。
#29
独木星空2025-03-24 12:37
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\三生素数jg30.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 2
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE sss30 WITH A+15   &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#30
独木星空2025-03-24 19:48
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\四生素数jg30.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 3
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ssss30 WITH A+15 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#31
独木星空2025-03-25 06:18
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\五生素数jg30.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 4
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE wss30 WITH A+15  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#32
独木星空2025-03-25 10:38
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\六生素数jg30.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 5
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE lss30 WITH A+15 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#33
独木星空2025-03-25 14:33
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\七生素数jg30.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 6
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE qss30 WITH A+15 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#34
独木星空2025-03-25 18:45
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\八生素数jg30.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 7
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE qss30 WITH A+15 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#35
独木星空2025-03-25 18:56
“REPLACE qss30 WITH A+15 &&将N值付给素数式(此行)qss30没有做相应更改,应改成:bss30 。  当更改后,还是运行中断,原因是建表时:字段名bss不全,忘记加30,正确是bss30
#36
独木星空2025-03-25 22:32
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\九生素数jg30.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 8
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=30
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE jss30 WITH A+15 &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#37
独木星空2025-03-29 00:42
SELECT 1
USE D:\素数式系数\二生素数表名称.DBF ALIAS 二素表名
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 59
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    bmc=表名称
               && mc="&bmc."
    zdm=表字段
   
        SELECT 2
        USE "&bmc."
        SELECT 3
         USE D:\素数式系数\二生素数统计表.DBF ALIAS 统计表
         SELECT 3
         APPEND BLANK     &&增加一条空记录
         REPLACE 表索引 WITH "&bmc"      &&将N值付给素数式
         SELECT 2
            FOR j=1 TO 9   
            k=10^j
            h=j
                       && PUBLIC zd
            SELECT 2
            COUNT ALL FOR &zdm.<k TO tj
            cc="十"+transform(h)+"次"
                          
                          SELECT 3
                        
                          REPLACE &cc. WITH tj        &&将N值付给素数式
                          
           ENDFOR
       SELECT 3
       SKIP
      
   SELECT 1
   GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
试验了两三天,今天终于完成任务(2025年3月29日0:42)
#38
独木星空2025-03-29 15:26
宏替换后,是作为变量用,还是字符串文本用,很重要。
#39
独木星空2025-03-29 21:04
ELECT 1
USE D:\素数式系数\素数式23.DBF ALIAS 素数式
kssj=SECONDS()
SELECT  1
GO 1
 E=1000
For i=1 to 200000
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
   
    PUBLIC A
    A=sss23
    SKIP 9
    PUBLIC B
    B=sss23
    cj1=B-A  &&求前后两个素数的差值
    IF E>cj1
    E=cj1
    ELSE E<=cj1
   
    E=E
         
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
   ?E
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#40
独木星空2025-03-30 08:58
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg4.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=4
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ers4 WITH A+2        &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#41
独木星空2025-03-30 15:12
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\二生素数jg24.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=24
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ers24 WITH A+12   &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#42
独木星空2025-03-30 20:28
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\三生素数jg24.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 2
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=24
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE sss24 WITH A+12    &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#43
独木星空2025-03-31 07:12
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\四生素数jg24.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 3
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=24
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE ssss24 WITH A+12  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#44
独木星空2025-03-31 11:43
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\五生素数jg24.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 4
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=24
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE wss24 WITH A+12  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#45
独木星空2025-03-31 16:55
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\六生素数jg24.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 5
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=24
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE lss24 WITH A+12  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#46
独木星空2025-03-31 21:13
SELECT 1
USE D:\素数式系数\素数表十亿.DBF ALIAS 素数表
SELECT 2
USE D:\素数式系数\七生素数jg24.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 6
    PUBLIC B
    B=素数
    cj1=B-A  &&求前后两个素数的差值
    IF cj1=24
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE qss24 WITH A+12  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#47
独木星空2025-04-06 10:44
SELECT 1
USE D:\素数式系数\素数式23.DBF ALIAS 素数式
SELECT 2
USE D:\素数式系数\最密k生素数间距.DBF ALIAS 间距
kssj=SECONDS()
FOR h=1 TO 100
    @ 5,12 say h
    k=h+1
    SELECT  1
    GO 1
    E=1000
      For i=1 to 1658880
     
      SELECT  1     &&打开盛放素数式的表
      jl=recno()
   
      PUBLIC A
      A=sss23
      SKIP h
      PUBLIC B
      B=sss23
      cj1=B-A  &&求前后两个素数的差值
      IF E>cj1
      E=cj1
      ELSE E<=cj1
   
      E=E
         
      ENDIF
      SELECT 1
      GO jl+1
      ENDFOR
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE ksss WITH k &&将k值付给ksss
      REPLACE jj WITH E
      
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#48
独木星空2025-04-06 10:46
上楼是查询(或者筛选)出,最密k生素数的间距程序,从素数式模块中排查。
#49
独木星空2025-04-17 13:41
SELECT 1
USE D:\素数式系数\素数式23.DBF  ALIAS 素数式23
SELECT 2
USE D:\素数式系数\素数表万.DBF ALIAS 素数表
SELECT 3
USE D:\素数式系数\素数式307.DBF ALIAS 素数式307
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 55
        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>54
        SELECT 3              &&打开保存求解结果的信息表
        APPEND BLANK                        &&增加一条空记录
        REPLACE sss307 WITH ly23            &&将被判断值保存到被判断值字段中(被判断值数据栏)
        ENDIF
        SELECT 1
        SKIP
        ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
#50
独木星空2025-04-17 13:42
我已经找到求最密k生素数最短间距的方法捷径。
#51
独木星空2025-04-18 22:03
SELECT 1
USE D:\素数式系数\素数式307.DBF ALIAS 素数式
SELECT 2
USE D:\素数式系数\最密k生素数间距新.DBF ALIAS 间距
kssj=SECONDS()
FOR h=91 TO 100
    @ 5,12 say h
    k=h+1
    SELECT  1
    GO 1
    E=1000
      For i=1 to 974480
     
      SELECT  1     &&打开盛放素数式的表
      jl=recno()
   
      PUBLIC A
      A=sss307
      SKIP h
      PUBLIC B
      B=sss307
      cj1=B-A  &&求前后两个素数的差值
      IF E>cj1
      E=cj1
      ELSE E<=cj1
   
      E=E
         
      ENDIF
      SELECT 1
      GO jl+1
      ENDFOR
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE ksssx WITH k &&将k值付给ksss
      REPLACE jjx WITH E
      
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
1234