数学中国

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

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

  [复制链接]
 楼主| 发表于 2021-3-3 17:38 | 显示全部楼层
SELECT 1
USE D:\循环往复\素数式链条结果.dbf ALIAS 素数链结果
SELECT 2
USE D:\循环往复\同跨度记录条分布列.dbf ALIAS 记录条分布
kssj=SECONDS()                      &&取出开始时间
   SELECT 1
   go 1
   FOR  j=1 TO 13
        jlt=68+j
        count all for 记录条=jlt to js
                 SELECT 2
                 APPEND BLANK
                 REPLACE 原跨度  WITH 446 &&改成本次追加记录的字段
                 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-3-3 18:16 | 显示全部楼层
SELECT 1
USE D:\循环往复\素数式链条.dbf ALIAS 素数链
SELECT 2
USE D:\循环往复\素数式链条结果.dbf ALIAS 素数式结果
SELECT 3
USE D:\循环往复\素数式优.dbf ALIAS 素数式优
kssj=SECONDS()                      &&取出开始时间
   SELECT 2
   go 1
   FOR  j=1 TO 14871
        jlt=记录条
        jlz=recno()  &&记住位置
        qsh=起始号
              IF jlt=81
                SELECT 1
                GO qsh
                FOR i=1 TO 81
                 SELECT 1
                 sss=素数式
                 SELECT 3
                 APPEND BLANK
                 REPLACE 素数式 WITH sss &&此素数式非彼素数式
                  SELECT 1
                  SKIP
                  ENDFOR
                ENDIF
             SELECT 2
              skip
     ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
&& 在上面(两个程序运行后的数据)的基础上,摘抄符合条件的素数式。
这是最后一步,第九步。导出符合条件的素数式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-3 18:19 | 显示全部楼层
?2021-2021+20210303
USE 标记同跨度k生数 AGAIN IN 0
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
?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
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
use
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
?reccount()
use
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
DO d:\循环往复\打分素数式链条.prg
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
SELECT 记录条分布
BROWSE LAST
?1+3+21+117+534+1420+3000+3875+3219+1851+669+144+17
use
MODIFY COMMAND d:\循环往复\导出符合条件的素数式.prg AS 936
DO d:\循环往复\导出符合条件的素数式.prg
SELECT 素数式结果
BROWSE LAST
use
SELECT 素数式优
BROWSE LAST
COPY TO d:\循环往复\素数式链条446优.xls TYPE XL5
use
这是2021年03月03日对跨度为446的素数式全部操作处理过程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 10:45 | 显示全部楼层
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
SELECT 记录条分布
BROWSE LAST
DELETE ALL
PACK
SELECT 记录条分布
BROWSE LAST
MODIFY COMMAND d:\循环往复\统计记录条分布.prg AS 936
SELECT 记录条分布
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\制作零位表.prg AS 936
MODIFY COMMAND d:\循环往复\打分素数式链条.prg AS 936
SELECT 素数链结果
BROWSE LAST
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
MODIFY COMMAND d:\循环往复\统计记录条分布.prg AS 936
SELECT 记录条分布
BROWSE LAST
use
MODIFY PROJECT d:\循环往复\圆周式.pjx
USE 标记同跨度k生数 AGAIN IN 0
SELECT 标记同跨度k生数
BROWSE LAST
DELETE ALL
PACK
USE 标记同跨度记录条分布列 AGAIN IN 0
SELECT 标记同跨度记录条分布列
BROWSE LAST
DELETE ALL
PACK
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
use
USE 零位表 AGAIN IN 0
SELECT 零位表
BROWSE LAST
DELETE ALL
PACK
USE 素数a不余 AGAIN IN 0
SELECT 素数a不余
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
use
USE 同跨度记录条分布列 AGAIN IN 0
SELECT 同跨度记录条分布列
BROWSE LAST
DELETE ALL
PACK
MODIFY COMMAND d:\循环往复\制作同跨度素数式表.prg AS 936
DO d:\循环往复\制作同跨度素数式表.prg
SELECT 同跨度
BROWSE LAST
?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
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
use
SELECT 记录条分布
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\制作最密素数式链条.prg AS 936
DO d:\循环往复\制作最密素数式链条.prg
MODIFY COMMAND d:\循环往复\制作最密素数式链条.prg AS 936
SELECT 素数式链
BROWSE LAST
?reccount()
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 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
go bottom
DELETE NEXT 1
PACK
MODIFY COMMAND d:\循环往复\提取记录条大小值.prg AS 936
DO d:\循环往复\提取记录条大小值.prg
SELECT 大小值
BROWSE LAST
use
MODIFY COMMAND d:\循环往复\统计记录条分布.prg AS 936
DO d:\循环往复\统计记录条分布.prg
USE 记录条大小值 AGAIN IN 0
SELECT 记录条大小值
BROWSE LAST
use
USE 标记同跨度记录条分布列 AGAIN IN 0
SELECT 标记同跨度记录条分布列
BROWSE LAST
use
SELECT 记录条分布
BROWSE LAST
COPY TO d:\循环往复\素数式链条450分布筛选后.xls TYPE XL5
use
MODIFY COMMAND d:\循环往复\导出符合条件的素数式.prg AS 936
DO d:\循环往复\导出符合条件的素数式.prg
SELECT 素数式优
BROWSE LAST
COPY TO d:\循环往复\素数式链条450优.xls TYPE XL5
use
这是部分操作记录。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 10:48 | 显示全部楼层
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 2498 &&最外一层嵌套,根据表中记录条调节循环次数
  @ 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,"运行时间提示")
这个程序有它自身的局限性。因为它找不到最密的82生素数,最密83生素数(又或者基础表不与其配套,需要升级,我用的是至素数19的素数式)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-18 15:54 | 显示全部楼层
SELECT 1
USE D:\逐步升级\素数式至19.dbf ALIAS 素式19  &&比制作表的素数值小(即下表)        原表在条件为真时
SELECT 2
USE D:\逐步升级\标记同跨度k生数.dbf ALIAS 同跨度k生数 &&比上边已筛除的素数值要大  在条件为假时参考表
SELECT 3
USE D:\逐步升级\临时素数式.dbf ALIAS 临素式  &&即将筛除素数余数的盛放表,与上表(参考表)素数值相同   在条件为真时制造表,即新表
SELECT 4
USE D:\逐步升级\素数式至23段落.dbf ALIAS 素式段落 &&比上边已筛除的素数值要大  在条件为真时参考表
kssj=SECONDS()   &&取出开始时间
SELECT 2
go 1
for wxhcs=1 to 2498 &&最外一层嵌套,根据表中记录条调节循环次数,wxhcs=外循环次数
  @ 15,20 say wxhcs  &&显示外循环次数
   SELECT 2
   jlt=记录条  &&给变量jlt赋值
   kd=跨度  &&给变量kd赋值
   qsh=起始号  &&给变量qsh赋值
         if  jlt>83
              for i=1  to  23
                  SELECT 1
                  go  qsh  &&起始号,把指针移动到开始位置
                      for  j=1  to   jlt
                       s19=素19
                       pdz=s19+(i-1)*9699690  &&pdz(判断值),等于素19+9699690的周期倍数
                       ys=mod(pdz,23)  &&ys(余数)等于判断值对素数23取模
                          if  ys=0
                          else
                           SELECT 3
                           APPEND BLANK
                           REPLACE 素式 WITH pdz
                           endif
                        SELECT 1
                        skip
                        endfor
                        SELECT 3
                        jlts=reccount()
                        go 1
                        ssq=素式 &&素式首
                        go  bottom
                        ssm=素式 &&素式末
                        if ssm-ssq=450 and jlts>82
                          SELECT 3
                          go 1
                          for k=1  to  jlts
                          ss=素式
                          SELECT 4
                           APPEND BLANK
                           REPLACE 素23 WITH ss
                           SELECT 3
                           skip
                           endfor
                         endif
                         select 3
                         DELETE ALL
                         PACK
              endfor
         endif
     SELECT 2
     skip
endfor  &&    最外一层嵌套
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")

&&这是把符合条件的素数式链条升级到更高一级的程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-26 11:20 | 显示全部楼层
SELECT 1
USE D:\回到本源\素数表亿.DBF ALIAS 素数亿
SELECT 2
USE D:\回到本源\素数对表.DBF ALIAS 素数对
kssj=SECONDS()
   SELECT 1
     go 1
    For N=1 to 46
    @ 5,12 say N
       go  N
       ss1=素数
         SELECT 1
          go 1
          for  M=1  to  46
          ss2=素数
               if ss2+ss1=210
                SELECT  2      &&打开盛放素数的表
                APPEND BLANK                        &&增加一条空记录
                REPLACE 参照素数 WITH ss1  
                REPLACE 对应素数 WITH ss2  
                REPLACE 偶数 WITH 210
                endif
                SELECT 1
                skip
             endfor
        ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
在素数表中寻找素数加法素数对。
SELECT 1
USE D:\回到本源\素数表亿.DBF ALIAS 素数亿
SELECT 2
USE D:\回到本源\素数对表.DBF ALIAS 素数对
kssj=SECONDS()
   SELECT 1
     go 1
    For N=1 to 46
    @ 5,12 say N
       go  N
       ss1=素数
         SELECT 1
          go 47
          for  M=1  to  46
          ss2=素数
               if ss2-ss1=210
                SELECT  2      &&打开盛放素数的表
                APPEND BLANK                        &&增加一条空记录
                REPLACE 参照素数 WITH ss1  
                REPLACE 对应素数 WITH ss2  
                REPLACE 偶数 WITH 210
                endif
                SELECT 1
                skip
             endfor
        ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
在素数表中寻找素数减法素数对。
哥德巴赫猜想与孪生素数猜想是一个问题的两个方面。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 15:17 | 显示全部楼层
SELECT 1
USE D:\回到本源\素数表亿.DBF ALIAS 素数亿
SELECT 2
USE D:\回到本源\同种因子二生素数.DBF ALIAS 二生素数统计
kssj=SECONDS()
    For N=1 to 4
    @ 5,12 say N
        SELECT 1
          go 1
          tj=0  &&js=计数,先给变量赋值
          for  M=1  to  22686400
          ss1=素数
          zzwz=RECNO()  &&指针位置
          ss2=ss1+N*6
               count next 2*n+1 for ss2=素数 to js
               if js>0
                tj=tj+1
                endif
                SELECT 1
                go zzwz+1
           endfor
           if  M>22686400
                SELECT  2      &&打开盛放素数的表
                APPEND BLANK                        &&增加一条空记录
                REPLACE 素差 WITH 6*N
                REPLACE 统计 WITH tj
           endif
        ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 21:24 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式5.DBF ALIAS 素数式5
kssj=SECONDS()
    For i=1 to 29  STEP 2
       IF MOD(i,3)=0 OR MOD(i,5)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  1    &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式至5 WITH i &&将B值付给素数式
       ENDIF
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\二生素数分解\素数式5.DBF ALIAS 素数式5
SELECT 2
USE D:\二生素数分解\素数式7.DBF ALIAS 素数式7
kssj=SECONDS()
    For i=8 to 8
        SELECT 1
        GO 1
        FOR j=1 TO 8
          ssz5=素式至5
          pdz=ssz5+(i-1)*30  && pdz是判断值的缩写(速写)
       IF MOD(pdz,7)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  2   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式7 WITH pdz &&将B值付给素数式
       ENDIF
       SELECT 1
       SKIP
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\二生素数分解\素数式7.DBF ALIAS 素数式7
SELECT 2
USE D:\二生素数分解\素数式11.DBF ALIAS 素数式11
kssj=SECONDS()
    For i=12 to 12
        SELECT 1
        GO 1
        FOR j=1 TO 8
          ss7=素式7
          pdz=ss7+(i-1)*210  && pdz是判断值的缩写(速写)
       IF MOD(pdz,11)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  2   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式11 WITH pdz &&将B值付给素数式
       ENDIF
       SELECT 1
       SKIP
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\二生素数分解\素数式11.DBF ALIAS 素数式11
SELECT 2
USE D:\二生素数分解\素数式13.DBF ALIAS 素数式13
kssj=SECONDS()
    For i=14 to 14
        SELECT 1
        GO 1
        FOR j=1 TO 48
          ss11=素式11
          pdz=ss11+(i-1)*2310  && pdz是判断值的缩写(速写)
       IF MOD(pdz,13)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  2   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式13 WITH pdz &&将B值付给素数式
       ENDIF
       SELECT 1
       SKIP
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\二生素数分解\素数式13.DBF ALIAS 素数式13
SELECT 2
USE D:\二生素数分解\素数式17.DBF ALIAS 素数式17
kssj=SECONDS()
    For i=18 to 18
        SELECT 1
        GO 1
        FOR j=1 TO 480
          ss13=素式13
          pdz=ss13+(i-1)*30030  && pdz是判断值的缩写(速写)
       IF MOD(pdz,17)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  2   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式17 WITH pdz &&将B值付给素数式
       ENDIF
       SELECT 1
       SKIP
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\二生素数分解\素数式17.DBF ALIAS 素数式17
SELECT 2
USE D:\二生素数分解\素数式19.DBF ALIAS 素数式19
kssj=SECONDS()
    For i=20 to 20
        SELECT 1
        GO 1
        FOR j=1 TO 5760
          ss17=素式17
          pdz=ss17+(i-1)*510510  && pdz是判断值的缩写(速写)
       IF MOD(pdz,19)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  2   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式19 WITH pdz &&将B值付给素数式
       ENDIF
       SELECT 1
       SKIP
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\二生素数分解\素数式19.DBF ALIAS 素数式19
SELECT 2
USE D:\二生素数分解\素数式23.DBF ALIAS 素数式23
kssj=SECONDS()
    For i=24 to 24
        SELECT 1
        GO 1
        FOR j=1 TO 92160
          ss19=素式19
          pdz=ss19+(i-1)*9699690  && pdz是判断值的缩写(速写)
       IF MOD(pdz,23)=0 && 如果S被其中素数之一整除就跳过,什么也不做
       ELSE  &&否则执行第二步方案
       SELECT  2   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式23 WITH pdz &&将B值付给素数式
       ENDIF
       SELECT 1
       SKIP
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是在完成素数式以后的,续航程序,为了分析素数式,在原来的基础上,做了循环加项。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 21:25 | 显示全部楼层
已经快一个月了。没有时间继续学习VFP编程。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 14:22 , Processed in 0.090368 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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