数学中国

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

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

  [复制链接]
 楼主| 发表于 2021-7-13 09:56 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L20中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=100 to 10000
@ 3,6 say i
       X=6*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二20中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二20中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二20中
                GO xjl
                xss=二20中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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 20
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-7-13 15:02 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L6中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=10001 to 100000
@ 3,6 say i
       X=2*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二6中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二6中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二6中
                GO xjl
                xss=二6中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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 6
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
细心的网友不知道是否看出,我有意避开了二生素数间距是6的倍数的二生素数。
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-7-13 16:23 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\偶数的素数对.DBF ALIAS 偶数素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L12中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=199900 to 200000
@ 3,6 say i
       X=2*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
          s=0
        SELECT 2
        LOCATE FOR 二12中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二12中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二12中
                GO xjl
                xss=二12中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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
                               s=s+1
                        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 s
        ENDIF
        i=i+1
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 19:16 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L18中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=10001 to 50000
@ 3,6 say i
       X=2*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二18中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二18中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二18中
                GO xjl
                xss=二18中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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 18
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
其实有的程序,简单的改写一下,就能实现新功能,比如本程序,把exit跳出循环语句,改成累加计数s=s+1,就可以实现对偶数求素数对。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 19:17 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L18中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=10001 to 50000
@ 3,6 say i
       X=2*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二18中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二18中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二18中
                GO xjl
                xss=二18中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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 18
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
其实有的程序,简单的改写一下,就能实现新功能,比如本程序,把exit跳出循环语句,改成累加计数s=s+1,就可以实现对偶数求素数对。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-13 19:40 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\偶数的素数对.DBF ALIAS 偶数素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L18中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=199900 to 200000
@ 3,6 say i
       X=2*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
          s=0
        SELECT 2
        LOCATE FOR 二18中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二18中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二18中
                GO xjl
                xss=二18中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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
                               s=s+1
                        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 s
        ENDIF
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
时好时坏,有时运行到半路就不往下进行了。
回复 支持 反对

使用道具 举报

发表于 2021-7-14 08:52 | 显示全部楼层
LOCAL xjl,djl,ts,xss,dss,kssj,tj
CLEAR
SELECT 1
USE D:\二生素数中项合成\不能被广孪中合成的偶数.DBF ALIAS 广孪中素数对    &&素数对表结构:偶数、统计
SELECT 2
USE D:\二生素数中项合成\二生L24中项.DBF  ALIAS 广孪中表
kssj=SECONDS()
FOR i=100 to 20000
@ 3,6 say i
       X=2*i &&这是在筛选四生素数置数,非寻找不能合成的偶数。
          Y=X/2   &&求出偶数的中值
        SELECT 2
        LOCATE FOR 二24中>X
        DO CASE
                CASE EOF()
                        GO Bottom
                CASE 二24中>X
                        SKIP -1
        ENDCASE
        xjl=1
        djl=RECNO()
        t=.T.
        DO WHILE t
                dss=二24中
                GO xjl
                xss=二24中
                                              &&放在这里比较合适,这里原来显示小素数的值,去掉了。
                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 24
        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 05:29 , Processed in 0.100838 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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