数学中国

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

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

  [复制链接]
发表于 2021-7-12 16:33 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\素数3165万内.DBF ALIAS 素数表
SELECT 2
USE D:\二生素数中项合成\二生L22中项.DBF ALIAS 二生中项
kssj=SECONDS()
For i=1 to 78497
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 12 FOR 素数-A=22 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二22中 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,"运行时间提示")
这是搜寻二生素数(P,P+22)的中项程序。
回复 支持 反对

使用道具 举报

发表于 2021-7-12 16:36 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\素数3165万内.DBF ALIAS 素数表
SELECT 2
USE D:\二生素数中项合成\二生L24中项.DBF ALIAS 二生中项
kssj=SECONDS()
For i=1 to 78497
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 13 FOR 素数-A=24 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二24中 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,"运行时间提示")
这是搜寻二生素数(P,P+24)的中项程序。第一个17是异类,不合群。
回复 支持 反对

使用道具 举报

发表于 2021-7-12 16:38 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\素数3165万内.DBF ALIAS 素数表
SELECT 2
USE D:\二生素数中项合成\二生L26中项.DBF ALIAS 二生中项
kssj=SECONDS()
For i=1 to 78497
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 14 FOR 素数-A=26 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二26中 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,"运行时间提示")
这是搜寻二生素数(P,P+26)的中项程序。第二个18是异类,不合群。
回复 支持 反对

使用道具 举报

发表于 2021-7-12 16:41 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\素数3165万内.DBF ALIAS 素数表
SELECT 2
USE D:\二生素数中项合成\二生L28中项.DBF ALIAS 二生中项
kssj=SECONDS()
For i=1 to 78497
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    COUNT NEXT 15 FOR 素数-A=28 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 二28中 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,"运行时间提示")
这是搜寻二生素数(P,P+28)的中项程序。
回复 支持 反对

使用道具 举报

发表于 2021-7-12 16:45 | 显示全部楼层
对二生素数的中项搜寻结果看,几乎所有二生素数的中项尾数都是占3种(3类),要么同时为奇,要么同时为偶。没有奇偶混合现象。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 18:39 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L4中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=100  to 10000
@ 3,6 say i
       X=6*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二4中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二4中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二4中
                GO xjl
                xss=二4中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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 1
        APPEND BLANK
        REPLACE 偶数 WITH X
        REPLACE 二生间距 WITH 4
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是广孪中和不能合成6n类偶数的搜寻程序,有点瑕疵,可能把正好为孪中2倍的数给搜寻出来(无判情况)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 19:10 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L8中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=10001 to 50000
@ 3,6 say i
       X=6*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二8中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二8中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二8中
                GO xjl
                xss=二8中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                IF xss<Y+1 OR dss>Y-1                              &&判断跳出语句如果放在后面,有时出现一个重复素数对
                          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 1
        APPEND BLANK
        REPLACE 偶数 WITH X
        REPLACE 二生间距 WITH 8
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是广孪中和不能合成6n类偶数的搜寻程序,已改进,不会再无判。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 22:12 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L10中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=10001 to 50000
@ 3,6 say i
       X=6*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二10中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二10中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二10中
                GO xjl
                xss=二10中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                IF xss<Y+1 OR dss>Y-1                              &&判断跳出语句如果放在后面,有时出现一个重复素数对
                          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 1
        APPEND BLANK
        REPLACE 偶数 WITH X
        REPLACE 二生间距 WITH 10
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
大同小异,自己领会吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 06:13 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L14中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=100 to 10000
@ 3,6 say i
       X=6*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二14中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二14中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二14中
                GO xjl
                xss=二14中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                IF xss<Y+1 OR dss>Y-1                              &&判断跳出语句如果放在后面,有时出现一个重复素数对
                          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 1
        APPEND BLANK
        REPLACE 偶数 WITH X
        REPLACE 二生间距 WITH 14
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
在600以后,只有一个1098无解。
回复 支持 反对

使用道具 举报

发表于 2021-7-13 06:49 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L16中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=100 to 10000
@ 3,6 say i
       X=6*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二16中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二16中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二16中
                GO xjl
                xss=二16中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                IF xss<Y+1 OR dss>Y-1                              &&判断跳出语句如果放在后面,有时出现一个重复素数对
                          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 1
        APPEND BLANK
        REPLACE 偶数 WITH X
        REPLACE 二生间距 WITH 16
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 07:28 , Processed in 0.096232 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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