数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: 白新岭

[原创]请教vfbpgyfk先生一个编程问题

  [复制链接]
 楼主| 发表于 2021-2-15 21:03 | 显示全部楼层
SELECT 1
USE D:\循环往复\同跨度k生数分布数据.dbf ALIAS k生数分布
SELECT 2
USE D:\循环往复\不同记录条分布.dbf ALIAS 记录条分布列
kssj=SECONDS()                      &&取出开始时间
   SELECT 1
   GO 1
   FOR  j=1 TO 20
   hzs=63+j
   count all for 记录条=hzs to js
        
                 SELECT 2
                 APPEND BLANK
                 REPLACE 记录条 WITH js
                 REPLACE 原跨度 WITH 424 &&改成本次追加记录的字段
                 REPLACE 互质式 WITH hzs
     SELECT 1
     go 1
   ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是一个制作记录条分布列程序(应该先求出最大值和最小值).
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-15 21:51 | 显示全部楼层
SELECT 1
USE D:\循环往复\标记同跨度k生数.dbf ALIAS k生数分布
SELECT 2
USE D:\循环往复\不同记录条分布列.dbf ALIAS 记录条分布列
kssj=SECONDS()                      &&取出开始时间
   SELECT 1
   GO 1
   FOR  j=1 TO 4
   hzs=78+j
   count all for 记录条=hzs to js
        
                 SELECT 2
                 APPEND BLANK
                 REPLACE 记录条 WITH js
                 REPLACE 跨度 WITH 426 &&改成本次追加记录的字段
                 REPLACE 互质式 WITH hzs
     SELECT 1
     go 1
   ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是与上楼差不多一样的程序(只不过,这是事先检测,上边的是事后检测,目的不一样)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-15 22:05 | 显示全部楼层
今天不知什么原因,程序运行中,突发停止,说不能提取素数b余数参考(这是第二次的提示,第一次是说素数b余数参考表不存在,我从新建了表后,这样提示的(即第二次的提示)),不知道怎么造成的,以前运行正常。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-16 10:00 | 显示全部楼层
USE
DO d:\循环往复\制作素数式链条完美版.prg
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
SELECT 素数式链
BROWSE LAST
USE
USE 素数式链条 AGAIN IN 0
SELECT 素数式链条
BROWSE LAST
?RECCOUNT()
CLEAR

?RECCOUNT()
GO
bottom
gobottom
GO bottom
GO top
USE
MODIFY COMMAND d:\循环往复\制作零位表.prg AS 936
DO d:\循环往复\制作零位表.prg
SELECT 零位
BROWSE LAST
GO top
USE
MODIFY COMMAND d:\循环往复\素数式链条打分.prg AS 936
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
?RECCOUNT()
USE
DO d:\循环往复\素数式链条打分.prg
MODIFY COMMAND d:\循环往复\素数式链条打分.prg AS 936
SELECT K生数分布
BROWSE LAST
count all for 记录条=79 to js
?js
count all for 记录条=78 to js
?js
count all for 记录条=77 to js
?js
count all for 记录条=76 to js
?js
count all for 记录条=75 to js
?js
count all for 记录条=74 to js
?js
count all for 记录条=73 to js
?js
count all for 记录条=72 to js
?js
count all for 记录条=71 to js
?js
count all for 记录条=70 to js
?js
count all for 记录条=69 to js
?js
count all for 记录条=68 to js
?js
count all for 记录条=67 to js
?js
USE
USE 同跨度k生数分布数据 AGAIN IN 0
SELECT 同跨度k生数分布数据
BROWSE LAST
?RECCOUNT()
?4+41+248+603+1145+1298+910+345+103+18+4
USE
MODIFY COMMAND d:\循环往复\素数式链条打分.prg AS 936
DO d:\循环往复\制作记录条分布列.prg
SELECT 不同记录条分布
BROWSE LAST
USE
DO d:\循环往复\制作记录条分布列.prg
USE 同跨度k生数分布数据 AGAIN IN 0
SELECT 同跨度k生数分布数据
BROWSE LAST
DO d:\循环往复\制作记录条分布列.prg
SELECT 同跨度k生数分布数据
BROWSE LAST
USE
DO d:\循环往复\制作记录条分布列.prg
SELECT 记录条分布列
BROWSE LAST
USE
DO d:\循环往复\制作记录条分布列.prg
SELECT 记录条分布列
BROWSE LAST
DELETE ALL
PACK
SELECT 记录条分布列
BROWSE LAST
USE
USE 不同记录条分布 EXCLUSIVE IN 0
SELECT 不同记录条分布
MODIFY STRUCTURE
MODIFY COMMAND d:\循环往复\制作记录条分布列.prg AS 936
DO d:\循环往复\制作记录条分布列.prg
SELECT 记录条分布列
BROWSE LAST
COPY TO d:\循环往复\记录条分布列424.xls TYPE XL5
USE
MODIFY COMMAND d:\循环往复\制作记录条分布列.prg AS 936
USE 素数式链条结果 AGAIN IN 0
SELECT 素数式链条结果
BROWSE LAST
MODIFY COMMAND d:\循环往复\查找符合要求的素数式摘抄.prg AS 936
SELECT K生数分布
BROWSE LAST
?RECCOUNT()
COPY TO d:\循环往复\素数式链条基于19的前半部424产品.xls TYPE XL5
CLEAR
SELECT K生数分布
BROWSE LAST
?RECCOUNT()
USE
SELECT 素数式链条结果
BROWSE LAST
USE
USE 素数式链条 AGAIN IN 0
SELECT 素数式链条
BROWSE LAST
GO bottom
USE
MODIFY COMMAND d:\循环往复\查找符合要求的素数式摘抄.prg AS 936
DO d:\循环往复\查找符合要求的素数式摘抄.prg
SELECT 素数式结果
BROWSE LAST
COPY TO d:\循环往复\素数式链条基于19的前半部产品78生424.xls TYPE XL5
DELETE ALL
PACK
SELECT 素数链
BROWSE LAST
DELETE ALL
PACK
SELECT K生数分布
BROWSE LAST
DELETE ALL
PACK
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
DELETE ALL
PACK
USE 不同记录条分布 AGAIN IN 0
SELECT 不同记录条分布
BROWSE LAST
DELETE ALL
PACK
SELECT 零位表
BROWSE LAST
USE
SELECT 不同记录条分布
BROWSE LAST
USE
SELECT 同跨度
BROWSE LAST
DELETE ALL
PACK
SELECT 同跨度
BROWSE LAST
USE
USE 不同记录条分布 AGAIN IN 0
SELECT 不同记录条分布
BROWSE LAST
USE
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
USE
SELECT 素数链
BROWSE LAST
USE
SELECT 素数式结果
BROWSE LAST
USE
SELECT K生数分布
BROWSE LAST
USE
MODIFY COMMAND d:\循环往复\制作同跨度素数式初始表.prg AS 936
DO d:\循环往复\制作同跨度素数式初始表.prg
SELECT 素数式19
BROWSE LAST
USE
DO d:\循环往复\制作同跨度素数式初始表.prg
SELECT 同跨度
BROWSE LAST
?RECCOUNT()
CLEAR
?RECCOUNT()
count all for 记录条=80 to js
?js
count all for 记录条=81 to js
?js
count all for 记录条=82 to js
?js
count all for 记录条=83 to js
?js
count all for 记录条=79 to js
?js
count all for 记录条=78 to js
?js
USE
MODIFY COMMAND d:\循环往复\制作记录条分布列.prg AS 936
DO d:\循环往复\制作记录条分布列同跨度.prg
SELECT 记录条分布列
BROWSE LAST
COPY TO d:\循环往复\素数式链条基于19的前半部426.xls TYPE XL5
USE
MODIFY COMMAND d:\循环往复\制作记录条分布列同跨度.prg AS 936
MODIFY COMMAND d:\循环往复\制作同跨度素数式初始表.prg AS 936
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
SELECT K生数分布
BROWSE LAST
?RECCOUNT()
USE
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
DO d:\循环往复\制作素数式链条完美版.prg
SELECT 素数b余数参考
MODIFY STRUCTURE
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
SELECT 素数式链
BROWSE LAST
?RECCOUNT()
DELETE ALL
PACK
SELECT 素数式链
BROWSE LAST
USE
CLEAR
DO d:\循环往复\制作素数式链条完美版.prg
MODIFY PROJECT d:\循环往复\素数式项目.pjx
USE 素数a不余 AGAIN IN 0
SELECT 素数a不余
BROWSE LAST
USE
USE 素数a余数参考 AGAIN IN 0
SELECT 素数a余数参考
BROWSE LAST
USE
USE 素数b余数参考 AGAIN IN 0
SELECT 素数b余数参考
BROWSE LAST
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
USE 素数式链条 AGAIN IN 0
SELECT 素数式链条
BROWSE LAST
DELETE ALL
PACK
MODIFY COMMAND d:\循环往复\制作素数式链条完美版.prg AS 936
DO d:\循环往复\制作素数式链条完美版.prg
SELECT 素数式链
BROWSE LAST
USE
USE 素数式链条 AGAIN IN 0
SELECT 素数式链条
BROWSE LAST
GO bottom
?RECCOUNT()
USE
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
USE
MODIFY COMMAND d:\循环往复\制作零位表.prg AS 936
DO d:\循环往复\制作零位表.prg
SELECT 零位
BROWSE LAST
GO 1
USE
SELECT 同跨度
BROWSE LAST
USE
MODIFY COMMAND d:\循环往复\素数式链条打分.prg AS 936
USE 同跨度k生数分布数据 AGAIN IN 0
SELECT 同跨度k生数分布数据
BROWSE LAST
USE
DO d:\循环往复\素数式链条打分.prg
SELECT K生数分布
BROWSE LAST
count all for 记录条=71 to js
?js
count all for 记录条=71 to js
?js
count all for 记录条=70 to js
?js
count all for 记录条=69 to js
?js
count all for 记录条=68 to js
?js
count all for 记录条=79 to js
?js
count all for 记录条=80 to js
?js
USE
USE 不同记录条分布列 AGAIN IN 0
SELECT 不同记录条分布列
BROWSE LAST
USE
USE 不同记录条分布 AGAIN IN 0
SELECT 不同记录条分布
BROWSE LAST
USE
MODIFY COMMAND d:\循环往复\制作记录条分布列.prg AS 936
USE 同跨度k生数分布数据 AGAIN IN 0
SELECT 同跨度k生数分布数据
BROWSE LAST
USE
MODIFY COMMAND d:\循环往复\制作记录条分布列.prg AS 936
DO d:\循环往复\制作记录条分布列.prg
SELECT 记录条分布列
BROWSE LAST
COPY TO d:\循环往复\记录条分布列426.xls TYPE XL5
SELECT K生数分布
BROWSE LAST
count all for 记录条=77 AND  跨度=420 to js
?js
count all for 记录条=77 AND  跨度=422 to js
?js
count all for 记录条=77 AND  跨度=424 to js
?js
count all for 记录条=77 AND  跨度=426 to js
?js
count all for 记录条=78 AND  跨度=422 to js
?js
USE
USE 素数式链条结果 AGAIN IN 0
SELECT 素数式链条结果
BROWSE LAST
USE
MODIFY COMMAND d:\循环往复\查找符合要求的素数式摘抄.prg AS 936
DO d:\循环往复\查找符合要求的素数式摘抄.prg
SELECT 素数式结果
BROWSE LAST
COPY TO d:\循环往复\素数式链条426.xls TYPE XL5
这是部分操作记录(在vfp中的工作记录,命令框中)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-18 13:52 | 显示全部楼层
SELECT 1
USE D:\循环往复\素数式链条结果.dbf ALIAS 素数式结果
SELECT 2
USE D:\循环往复\记录条大小值.dbf ALIAS 大小值
kssj=SECONDS()                      &&取出开始时间
   SELECT 1
   go 1
   jlt0=记录条
   jltd=jlt0
   jltx=jlt0
   FOR  j=1 TO 3170
      jltb=记录条
      if jltx>jltb
      jltx=jltb
      else
      jltx=jltx
      endif
      
       if jltd<jltb
      jltd=jltb
      else
      jltd=jltd
      endif
      SELECT 1
      skip
   endfor
      
        SELECT 2
        APPEND BLANK
        REPLACE 记录大 WITH jltd
        REPLACE 记录小 WITH jltx
   
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
&&主题思路:先找一个垫底参考值,然后比较与下一个值的大小关系,大赋给大值,小赋给小值,比原来大,小值不变,用原先的;比原来小,大值不变,取原来的。
  && 比较记录条的大小关系,并求出最终的大小值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-18 14:26 | 显示全部楼层
SELECT 1
USE D:\循环往复\素数式链条结果.dbf ALIAS 素数链结果
SELECT 2
USE D:\循环往复\同跨度记录条分布列.dbf ALIAS 记录条分布
kssj=SECONDS()                      &&取出开始时间
   SELECT 1
   go 1
   FOR  j=1 TO 11
        jlt=68+j
        count all for 记录条=jlt to js
                 SELECT 2
                 APPEND BLANK
                 REPLACE 原跨度  WITH 428 &&改成本次追加记录的字段
                 REPLACE 互素式 WITH jlt
                 REPLACE 统计 WITH js
     SELECT 1
     go  1
   ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
&& 在上一个程序基础上,继续打分素数式链条,得到原跨度,记录条数,起始位置信息,以便摘抄符合要求的素数式段落。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-19 09:17 | 显示全部楼层
我追求的目标是把数学语言翻译成机器语言(编程语言,算法)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-20 17:09 | 显示全部楼层
?123456789+876543211
count all for 记录条=84 to js
?js
count all for 记录条=83 to js
?js
?reccount
?reccount()
use
MODIFY COMMAND d:\循环往复\统计标记同跨度记录条分布.prg AS 936
DO d:\循环往复\统计标记同跨度记录条分布.prg
SELECT 记录条分布
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\提取标记同跨度中记录条大小值.prg AS 936
DO d:\循环往复\提取标记同跨度中记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\制作最密素数式链条.prg AS 936
DO d:\循环往复\制作最密素数式链条.prg
SELECT 素数式链
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\制作零位表.prg AS 936
DO d:\循环往复\制作零位表.prg
SELECT 零位表
BROWSE LAST
use
DO d:\循环往复\制作零位表.prg
SELECT 零位
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
DO d:\循环往复\打分素数式链条.prg
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
SELECT K生数分布
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\提取记录条大小值.prg AS 936
DO d:\循环往复\提取记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\统计记录条分布.prg AS 936
DO d:\循环往复\统计记录条分布.prg
SELECT 记录条分布
BROWSE LAST
COPY TO d:\循环往复\素数式链条436分布筛选后.xls TYPE XL5
use
MODIFY COMMAND d:\循环往复\导出符合条件的素数式.prg AS 936
DO d:\循环往复\导出符合条件的素数式.prg
SELECT 素数式优
BROWSE LAST
COPY TO d:\循环往复\素数式链条436优.xls TYPE XL5
这是对跨度436的全部操作步骤(开头少一两步操作)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 10:47 | 显示全部楼层
?123456789+876543211
count all for 记录条=84 to js
?js
count all for 记录条=83 to js
?js
?reccount
?reccount()
use
MODIFY COMMAND d:\循环往复\统计标记同跨度记录条分布.prg AS 936
DO d:\循环往复\统计标记同跨度记录条分布.prg
SELECT 记录条分布
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\提取标记同跨度中记录条大小值.prg AS 936
DO d:\循环往复\提取标记同跨度中记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\制作最密素数式链条.prg AS 936
DO d:\循环往复\制作最密素数式链条.prg
SELECT 素数式链
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\制作零位表.prg AS 936
DO d:\循环往复\制作零位表.prg
SELECT 零位表
BROWSE LAST
use
DO d:\循环往复\制作零位表.prg
SELECT 零位
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
DO d:\循环往复\打分素数式链条.prg
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
SELECT K生数分布
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\提取记录条大小值.prg AS 936
DO d:\循环往复\提取记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\统计记录条分布.prg AS 936
DO d:\循环往复\统计记录条分布.prg
SELECT 记录条分布
BROWSE LAST
COPY TO d:\循环往复\素数式链条436分布筛选后.xls TYPE XL5
use
MODIFY COMMAND d:\循环往复\导出符合条件的素数式.prg AS 936
DO d:\循环往复\导出符合条件的素数式.prg
SELECT 素数式优
BROWSE LAST
COPY TO d:\循环往复\素数式链条436优.xls TYPE XL5
MODIFY PROJECT d:\循环往复\圆周式.pjx
?123456789+876543211
USE 标记同跨度k生数 AGAIN IN 0
SELECT 标记同跨度k生数
BROWSE LAST
PACK
SELECT 标记同跨度k生数
BROWSE LAST
DELETE ALL
PACK
USE 标记同跨度记录条分布列 AGAIN IN 0
SELECT 标记同跨度记录条分布列
BROWSE LAST
use
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
use
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
DELETE ALL
PACK
USE 素数式链条 AGAIN IN 0
SELECT 素数式链条
BROWSE LAST
DELETE ALL
PACK
USE 素数式链条结果 AGAIN IN 0
SELECT 素数式链条结果
BROWSE LAST
DELETE ALL
PACK
USE 素数式优 AGAIN IN 0
SELECT 素数式优
BROWSE LAST
DELETE ALL
PACK
USE 同跨度记录条分布列 AGAIN IN 0
SELECT 同跨度记录条分布列
BROWSE LAST
DELETE ALL
PACK
MODIFY COMMAND d:\循环往复\制作同跨度素数式表.prg AS 936
DO d:\循环往复\制作同跨度素数式表.prg
SELECT 同跨度
BROWSE LAST
use
USE 标记同跨度k生数 AGAIN IN 0
SELECT 标记同跨度k生数
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\提取标记同跨度中记录条大小值.prg AS 936
DO d:\循环往复\提取标记同跨度中记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
USE 标记同跨度记录条分布列 AGAIN IN 0
SELECT 标记同跨度记录条分布列
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\统计标记同跨度记录条分布.prg AS 936
DO d:\循环往复\统计标记同跨度记录条分布.prg
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\制作最密素数式链条.prg AS 936
DO d:\循环往复\制作最密素数式链条.prg
SELECT 素数式链
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\制作零位表.prg AS 936
DO d:\循环往复\制作零位表.prg
SELECT 零位
BROWSE LAST
go 1
use
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
DO d:\循环往复\打分素数式链条.prg
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
SELECT K生数分布
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
USE 素数式链条结果 AGAIN IN 0
SELECT 素数式链条结果
BROWSE LAST
?reccount()
use
MODIFY COMMAND d:\循环往复\提取记录条大小值.prg AS 936
DO d:\循环往复\提取记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\统计记录条分布.prg AS 936
DO d:\循环往复\统计记录条分布.prg
SELECT 记录条分布
BROWSE LAST
COPY TO d:\循环往复\素数式链条438分布筛选后.xls TYPE XL5
use
MODIFY COMMAND d:\循环往复\导出符合条件的素数式.prg AS 936
DO d:\循环往复\导出符合条件的素数式.prg
SELECT 素数式优
BROWSE LAST
COPY TO d:\循环往复\素数式链条438优.xls TYPE XL5
use
这是操作跨度为438的一个全过程。最后得到最密81生素数式,两组。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-23 10:49 | 显示全部楼层
SELECT 1
USE D:\循环往复\素数a不余.dbf ALIAS 素数a  &&比制作表的素数值小(即下表)        原表在条件为真时
SELECT 2
USE D:\循环往复\素数a余数参考.dbf ALIAS 素数a余数 &&比上边已筛除的素数值要大  在条件为假时参考表
SELECT 3
USE D:\循环往复\素数b不余.dbf ALIAS 素数b  &&即将筛除素数余数的盛放表,与上表(参考表)素数值相同   在条件为真时制造表,即新表
SELECT 4
USE D:\循环往复\素数b余数参考.dbf ALIAS 素数b余数 &&比上边已筛除的素数值要大         在条件为真时参考表
SELECT 5
USE D:\循环往复\素数表.dbf ALIAS 素数表参 &&即将筛除素数余数的盛放表,与上表(参考表)素数值相同
SELECT 6
USE D:\循环往复\素数式至19.dbf ALIAS 素数式19  &&比制作表的素数值小(即下表)    原表在条件为真时
SELECT 7
USE D:\循环往复\标记同跨度k生数.dbf ALIAS 同跨度  &&比制作表的素数值小(即下表)    原表在条件为真时
SELECT 8
USE D:\循环往复\素数式链条.dbf ALIAS 素数式链  &&比制作表的素数值小(即下表)    原表在条件为真时
kssj=SECONDS()   &&取出开始时间
SELECT 7
go 1
for scxh=1 to 9209 &&最外一层嵌套,根据表中记录条调节循环次数
  @ 15,20 say scxh
qsh=起始号
jlt=记录条
SELECT 1
DELETE ALL
PACK    &&下步要制作1表,所以清空,不留数据
    SELECT 6
    go qsh
    s11d=式19 &&这里定个橛子,下边循环一周减它形成素数式
          for  j=1  to  jlt
          s11b=式19  &&给变量s11b赋值(s代表式,11代表至11的素数式,b是变的第一个字母)
           sss=s11b-s11d
           SELECT 1
           APPEND BLANK
          REPLACE 素a WITH sss
          SELECT 6
          skip
         endfor
      
  SELECT 5
  GO 8 &&从素数23开始
FOR n=1 TO 11   &&第二层嵌套
@ 5,10 say n
ss=素数
      IF MOD(n,2)=1 &&条件为真时,由a表制作b表,a表用一个,b表用2个,a表,为1和2,1表为主;b表为3和4,3表为主表
               SELECT 3
               DELETE ALL
               PACK    &&这步要用到3,4表,所以清空它们
               SELECT 4
               DELETE ALL
               pack   &&这步要用到3,4表,所以清空它们
               SELECT 1  
              zjl1=RECCOUNT()  &&把素数a不余的记录条数赋给变量zjl1
              GO 1            
              FOR i=1 TO zjl1 &&这个范围远远超过出现最后一个余数的记录条数
              A=素a &&改成表1的字段名
              jlz=RECNO()  &&记住指针所在位置
              SELECT 1  &&进入循环开始已经把表3,4清空了,所以无法满足条件,形同虚设,不过今天有了用处,可以判断记录条数与素数的大小关系,决定是否跳出循环
              jlzs2=RECCOUNT()  &&核对表2记录条总数
              IF jlzs2<ss &&改成将要制作参考表的素数值,即表2中的素数值(以前是等于号,不知道基于什么,现在也想不起原先的设计思路)
              exit  &&判断总记录条是否小于待过关素数,如果小于就跳出循环
              ENDIF
              ys=MOD(A,ss) &&改成将要制作参考表的素数值,即表2中的素数值
              SELECT 4
               count all for ys=余数b to js  &&改成将要制作参考表的字段名,即表2中的字段名
               IF js=0
               SELECT 4
               APPEND BLANK
               REPLACE 余数b WITH ys &&改成本次追加记录的字段名,即表2的字段名
               REPLACE 记录值 WITH jlz
               ENDIF
               SELECT 1
               skip
               ENDFOR
               SELECT 4
               zjl4=RECCOUNT()  &&把表4的记录条数赋给变量zjl4
   
               if zjl4<ss
                   SELECT 1
                  zjl1qb=RECCOUNT() &&当参考余数表中的余数种类少于过关素数时,整表照搬
                  GO 1
                  FOR ccb1sj=1 TO zjl1qb &&重抄表1数据
                  ccsa=素a
                  SELECT 3
                  APPEND BLANK
                  REPLACE 素b WITH ccsa &&改成本次追加记录的字段
                  SELECT 1
                   SKIP
                   endfor
               ELSE
               
               GO ss
               DELETE NEXT 1
               pack
               SELECT 1
               GO 1
                &&jlzs1=RECCOUNT()  核对表2记录条总数            
                DO WHILE NOT EOF() && FOR i=1 TO jlzs1  &&循环次数改成,SELECT 1 的总记录条数
                A=素a  &&设成表1的字段名
                ys=MOD(A,ss) &&对3表的素数求余数
                SELECT 4
                count all for ys=余数b to js
                IF js=1
                SELECT 3
                APPEND BLANK
                REPLACE 素b WITH A &&改成本次追加记录的字段
                ENDIF
                SELECT 1
                skip
                ENDDO
                endif
   
        ELSE  &&条件为假时,由b表制作a表,b表用一个,a表用2个  (a表,为1和2,1表为主;b表为3和4,3表为主表)

                SELECT 1
                DELETE ALL
                PACK    &&这步要用到1,2表,所以清空它们
                SELECT 2
                DELETE ALL
                pack   &&这步要用到1,2表,所以清空它们

                SELECT 3
                zjl3=RECCOUNT()  &&把素数a不余的记录条数赋给变量zjl1
                GO 1            
                FOR i=1 TO zjl3 &&这个范围远远超过出现最后一个余数的记录条数
                A=素b &&改成表1的字段名
                jlz=RECNO()  &&记住指针所在位置
                SELECT 3
                jlzs2=RECCOUNT()  &&核对表2记录条总数
                IF jlzs2<ss &&改成将要制作参考表的素数值,即表2中的素数值
                 exit
                 ENDIF
                  ys=MOD(A,ss) &&改成将要制作参考表的素数值,即表2中的素数值
                  SELECT 2
                  count all for ys=余数a to js  &&改成将要制作参考表的字段名,即表2中的字段名
                  IF js=0
                   SELECT 2
                   APPEND BLANK
                   REPLACE 余数a WITH ys &&改成本次追加记录的字段名,即表2的字段名
                   REPLACE 记录值 WITH jlz
                   ENDIF
                   SELECT 3
                   skip
                   ENDFOR
   
                   SELECT 2
                   zjl2=RECCOUNT()  &&把表2的记录条数赋给变量zjl2
                   if zjl2<ss
                         SELECT 3
                         zjl3qb=RECCOUNT() &&当参考余数表中的余数种类少于过关素数时,整表照搬
                         GO 1
                         FOR ccb1sj=1 TO zjl3qb &&重抄表1数据
                         ccsb=素b
                         SELECT 1
                        APPEND BLANK
                        REPLACE 素a WITH ccsb &&改成本次追加记录的字段
                        SELECT 3
                        SKIP
                        endfor
                    ELSE
                    
                      GO ss
                     DELETE NEXT 1
                     pack
                    SELECT 3
                    GO 1
                    &&jlzs1=RECCOUNT()  核对表2记录条总数            
                    DO WHILE NOT EOF() && FOR i=1 TO jlzs1  &&循环次数改成,SELECT 1 的总记录条数
                    A=素b  &&设成表1的字段名
                    ys=MOD(A,ss) &&对3表的素数求余数
                    SELECT 2
                    count all for ys=余数a to js
                    IF js=1
                    SELECT 1
                    APPEND BLANK
                   REPLACE 素a WITH A &&改成本次追加记录的字段
                   ENDIF
                   SELECT 3
                   skip
                   ENDDO
                   endif
         
           ENDIF
           SELECT 5 && 外循环是选择素数表
           skip
           endfor   &&第二层嵌套
   
     IF MOD(n,2)=1
          SELECT 3
         zjl3f=RECCOUNT()
          go 1
          for m=1 to zjl3f
          sssf=素b
          SELECT 8
          APPEND BLANK
          REPLACE 素数式 WITH sssf
          SELECT 3
          skip
          endfor
         
      else
            
             SELECT 1
             zjl1f=RECCOUNT()
             go 1
              for g=1 to zjl1f
              sssf=素a
              SELECT 8
              APPEND BLANK
              REPLACE 素数式 WITH sssf
              SELECT 1
              skip
             endfor
       endif
      
SELECT 7
  skip
  endfor      最外一层嵌套
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
在制作最密素数式上,这是一个重要的算法。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-7-7 06:33 , Processed in 0.084953 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表