| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2017 人关注过本帖
标题:简单的筛选二生素数程序
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值19.DBF ALIAS 四中和19  &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 9  &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=20-k &&czhi代表差值,即合成区间分量,这里每次需要改动
   SELECT 3
   GO czhi
   PUBLIC ZL2
   ZL2=总量
   PUBLIC FL2
   FL2=分量
        SELECT 1
        GO ZL1-FL1+1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
        FOR i=1 TO FL1
         && @ 19,16 say i
        jl=recno()
        PUBLIC A
        A=ssz
           SELECT 1
           GO ZL2-FL2+1&&到段区起始位置
           FOR j=1  TO FL2&&循环本区间的数据量
           PUBLIC B
           B=ssz
           n=A+B
           c=INT(n/210)*5-191222460 &&10623470*(19-1),每次需要改动
           d=(n-210*INT(n/210))/30
              IF d<2
              SELECT  2
              GO   c+d
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ELSE
              SELECT  2
              GO c+INT((d+INT(d/2))/2)
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ENDIF
         SELECT 1
         skip
         ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
 SELECT 3&&原来这里没有选择工作区导致第二次循环时中断
 GO jl1+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
四中和值19合成分配

素数问题的解决是我学习编程永恒的动力。
前天 09:39
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值19.DBF ALIAS 四中和19 &&需要更改阿拉伯数字部分
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 10 &&需要更改到段区+1除2一半的位置(指区间记录条
   FOR k=1 TO 1
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=20-10 &&czhi代表差值,即合成区间分量,需要更改段区和值
   SELECT 3
   GO czhi
   PUBLIC ZL2
   ZL2=总量
   PUBLIC FL2
   FL2=分量
        SELECT 1
        GO ZL1-FL1+1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
        FOR i=1 TO FL1
         && @ 19,16 say i
        jl=recno()
        PUBLIC A
        A=ssz
           SELECT 1
           GO ZL2-FL2+1&&到段区起始位置
           FOR j=1  TO FL2&&循环本区间的数据量
           PUBLIC B
           B=ssz
           n=A+B
           c=INT(n/210)*5-191222460 &&10623470*(19-1),需要更改段区阿拉伯数字,公式值改变被减数
           d=(n-210*INT(n/210))/30
              IF d<2
              SELECT  2
              GO   c+d
              REPLACE sztj WITH sztj+1 &&本次运行(a+b)的平方交叉部分
              ELSE
              SELECT  2
              GO c+INT((d+INT(d/2))/2)
              REPLACE sztj WITH sztj+1 &&本次运行(a+b)的平方交叉部分
              ENDIF
         SELECT 1
         skip
         ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
 SELECT 3&&原来这里没有选择工作区导致第二次循环时中断
 GO jl1+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
四中和值19和合成单独平方参与时分配

素数问题的解决是我学习编程永恒的动力。
前天 11:09
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
 SELECT 2
 USE d:\最密四生素数文件\四中和值18.DBF ALIAS 四中和18  &&需要更改文件名中阿拉伯数字内容
 kssj=SECONDS()
 SELECT 1
 GO 1
 FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+5800414620  &&446185740*(18-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz18 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四种和值5制作四种和值18

素数问题的解决是我学习编程永恒的动力。
前天 11:32
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值18.DBF ALIAS 四中和18 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 9  &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=19-k &&czhi代表差值,即合成区间分量,这里每次需要改动
   SELECT 3
   GO czhi
   PUBLIC ZL2
   ZL2=总量
   PUBLIC FL2
   FL2=分量
        SELECT 1
        GO ZL1-FL1+1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
        FOR i=1 TO FL1
         && @ 19,16 say i
        jl=recno()
        PUBLIC A
        A=ssz
           SELECT 1
           GO ZL2-FL2+1&&到段区起始位置
           FOR j=1  TO FL2&&循环本区间的数据量
           PUBLIC B
           B=ssz
           n=A+B
           c=INT(n/210)*5-180598990 &&10623470*(18-1),每次需要改动
           d=(n-210*INT(n/210))/30
              IF d<2
              SELECT  2
              GO   c+d
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ELSE
              SELECT  2
              GO c+INT((d+INT(d/2))/2)
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ENDIF
         SELECT 1
         skip
         ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
 SELECT 3&&原来这里没有选择工作区导致第二次循环时中断
 GO jl1+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
四中和值18和合成分配

素数问题的解决是我学习编程永恒的动力。
前天 12:14
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
 SELECT 2
 USE d:\最密四生素数文件\四中和值17.DBF ALIAS 四中和17  &&需要更改文件名中阿拉伯数字内容
 kssj=SECONDS()
 SELECT 1
 GO 1
 FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+5354228880  &&446185740*(17-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz17 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四种和值5制作四种和值17

素数问题的解决是我学习编程永恒的动力。
昨天 09:35
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值17.DBF ALIAS 四中和17 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 8  &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=18-k &&czhi代表差值,即合成区间分量,这里每次需要改动
   SELECT 3
   GO czhi
   PUBLIC ZL2
   ZL2=总量
   PUBLIC FL2
   FL2=分量
        SELECT 1
        GO ZL1-FL1+1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
        FOR i=1 TO FL1
         && @ 19,16 say i
        jl=recno()
        PUBLIC A
        A=ssz
           SELECT 1
           GO ZL2-FL2+1&&到段区起始位置
           FOR j=1  TO FL2&&循环本区间的数据量
           PUBLIC B
           B=ssz
           n=A+B
           c=INT(n/210)*5-169975520 &&10623470*(17-1),每次需要改动
           d=(n-210*INT(n/210))/30
              IF d<2
              SELECT  2
              GO   c+d
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ELSE
              SELECT  2
              GO c+INT((d+INT(d/2))/2)
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ENDIF
         SELECT 1
         skip
         ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
 SELECT 3&&原来这里没有选择工作区导致第二次循环时中断
 GO jl1+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
四种和值17和合成分配

素数问题的解决是我学习编程永恒的动力。
昨天 10:07
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1111
专家分:2728
注 册:2015-12-30
收藏
得分:0 
以下是引用独木星空在2025-6-19 11:32:55的发言:

 SELECT 1
 USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
 SELECT 2
 USE d:\最密四生素数文件\四中和值18.DBF ALIAS 四中和18  &&需要更改文件名中阿拉伯数字内容
 kssj=SECONDS()
 SELECT 1
 GO 1
 FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+5800414620  &&446185740*(18-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz18 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四种和值5制作四种和值18

 
提点小建议
 PUBLIC A    && 声明变量最好放到程序头部
 USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5 IN 0
 USE d:\最密四生素数文件\四中和值18.DBF ALIAS 四中和18 IN 0 &&需要更改文件名中阿拉伯数字内容
 kssj=SECONDS()
 SELECT 四中和5
&& GO TOP && 用SCAN循环会自动从满足条件的第一条记录开始
 SCAN FOR RECN()<=21246940   
&&    FOR i=1 TO 21246940 , 如果此表的记录数就是21246940,则SCAN后面的FOR条件可以取消
   @ 3,6 say i
   A=szhz5+5800414620  &&446185740*(18-5),需要更改被减数
   && jl=recno()    && 变量jl在后面没用到,此句可以取消
      SELECT 四中和18
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz18 WITH A  &&需要更改字段名阿拉伯数字内容
        && 上面3句可以改为下面这句
        && insert into 四中和18 (szhz18) values (A)
      SELECT 四中和5
      && skip 用SCAN循环可以不用skip
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四种和值5制作四种和值18
昨天 10:23
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值17.DBF ALIAS 四中和17 &&需要更改阿拉伯数字部分
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 9 &&需要更改到段区+1除2一半的位置(指区间记录条
   FOR k=1 TO 1
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=18-9 &&czhi代表差值,即合成区间分量,需要更改段区和值
   SELECT 3
   GO czhi
   PUBLIC ZL2
   ZL2=总量
   PUBLIC FL2
   FL2=分量
        SELECT 1
        GO ZL1-FL1+1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
        FOR i=1 TO FL1
         && @ 19,16 say i
        jl=recno()
        PUBLIC A
        A=ssz
           SELECT 1
           GO ZL2-FL2+1&&到段区起始位置
           FOR j=1  TO FL2&&循环本区间的数据量
           PUBLIC B
           B=ssz
           n=A+B
           c=INT(n/210)*5-169975520 &&10623470*(17-1),需要更改段区阿拉伯数字,公式值改变被减数
           d=(n-210*INT(n/210))/30
              IF d<2
              SELECT  2
              GO   c+d
              REPLACE sztj WITH sztj+1 &&本次运行(a+b)的平方交叉部分
              ELSE
              SELECT  2
              GO c+INT((d+INT(d/2))/2)
              REPLACE sztj WITH sztj+1 &&本次运行(a+b)的平方交叉部分
              ENDIF
         SELECT 1
         skip
         ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
 SELECT 3&&原来这里没有选择工作区导致第二次循环时中断
 GO jl1+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
四中和值17和合成单独平方项参与时合成数分配方案

素数问题的解决是我学习编程永恒的动力。
昨天 11:04
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
 SELECT 2
 USE d:\最密四生素数文件\四中和值16.DBF ALIAS 四中和16  &&需要更改文件名中阿拉伯数字内容
 kssj=SECONDS()
 SELECT 1
 GO 1
 FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+4908043140  &&446185740*(16-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz16 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四种和值5制作四种和值16

素数问题的解决是我学习编程永恒的动力。
昨天 11:26
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1301
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值16.DBF ALIAS 四中和16 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 8  &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=17-k &&czhi代表差值,即合成区间分量,这里每次需要改动
   SELECT 3
   GO czhi
   PUBLIC ZL2
   ZL2=总量
   PUBLIC FL2
   FL2=分量
        SELECT 1
        GO ZL1-FL1+1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
        FOR i=1 TO FL1
         && @ 19,16 say i
        jl=recno()
        PUBLIC A
        A=ssz
           SELECT 1
           GO ZL2-FL2+1&&到段区起始位置
           FOR j=1  TO FL2&&循环本区间的数据量
           PUBLIC B
           B=ssz
           n=A+B
           c=INT(n/210)*5-159352050 &&10623470*(16-1),每次需要改动
           d=(n-210*INT(n/210))/30
              IF d<2
              SELECT  2
              GO   c+d
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ELSE
              SELECT  2
              GO c+INT((d+INT(d/2))/2)
              REPLACE sztj WITH sztj+2 &&本次运行(a+b)的平方交叉部分
              ENDIF
         SELECT 1
         skip
         ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
 SELECT 3&&原来这里没有选择工作区导致第二次循环时中断
 GO jl1+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
四中和值16和合成分配方案

素数问题的解决是我学习编程永恒的动力。
昨天 11:46
快速回复:简单的筛选二生素数程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021623 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved