数学中国

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

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

  [复制链接]
 楼主| 发表于 2025-6-21 13:51 | 显示全部楼层
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值11.DBF ALIAS 四中和11 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 5 &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=12-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-106234700 &&10623470*(11-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,"运行时间提示")
四中和值11和合成分配
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 14:37 | 显示全部楼层
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值11.DBF ALIAS 四中和11 &&需要更改阿拉伯数字部分
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 6 &&需要更改到段区+1除2一半的位置(指区间记录条
   FOR k=1 TO 1
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=12-6 &&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-106234700 &&10623470*(11-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,"运行时间提示")
四中和值11单独平方项参与合成分配
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 15:00 | 显示全部楼层
SELECT 1
USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
SELECT 2
USE d:\最密四生素数文件\四中和值10.DBF ALIAS 四中和10  &&需要更改文件名中阿拉伯数字内容
kssj=SECONDS()
SELECT 1
GO 1
FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+2230928700  &&446185740*(10-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz10 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四中和值5制作四中和值10
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 19:12 | 显示全部楼层
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值10.DBF ALIAS 四中和10 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 5 &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=11-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-95611230 &&10623470*(10-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,"运行时间提示")
四中和值10和合成分配
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 20:07 | 显示全部楼层
SELECT 1
USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
SELECT 2
USE d:\最密四生素数文件\四中和值9.DBF ALIAS 四中和9  &&需要更改文件名中阿拉伯数字内容
kssj=SECONDS()
SELECT 1
GO 1
FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+1784742960  &&446185740*(9-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz9 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四中和值5制作四种和值9
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 20:20 | 显示全部楼层
截止2025年06月20日周五22:36分浏览量779469, 回复3804,热度282
截止2025年06月21日周六20:19分浏览量781445, 回复3815,热度282
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 20:29 | 显示全部楼层
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值9.DBF ALIAS 四中和9 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 4 &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=10-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-84987760 &&10623470*(9-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,"运行时间提示")
四种和值9和合成分配
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 22:15 | 显示全部楼层
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值9.DBF ALIAS 四中和9 &&需要更改阿拉伯数字部分
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 5 &&需要更改到段区+1除2一半的位置(指区间记录条
   FOR k=1 TO 1
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=10-5 &&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-84987760 &&10623470*(9-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,"运行时间提示")
四中和值9和合成分配,单独平方项参与时
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-21 22:38 | 显示全部楼层
SELECT 1
USE d:\最密四生素数文件\四中和值5.DBF ALIAS 四中和5
SELECT 2
USE d:\最密四生素数文件\四中和值8.DBF ALIAS 四中和8 &&需要更改文件名中阿拉伯数字内容
kssj=SECONDS()
SELECT 1
GO 1
FOR i=1 TO 21246940
   @ 3,6 say i
   PUBLIC A
   A=szhz5+1338557220  &&446185740*(8-5),需要更改被减数
   jl=recno()
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz8 WITH A  &&需要更改字段名阿拉伯数字内容
      SELECT 1
      skip
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用四中和值5制作四中和值8
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-22 00:19 | 显示全部楼层
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中和值8.DBF ALIAS 四中和8 &&每次需要改动
   SELECT 3
   USE d:\最密四生素数文件\四中统计表.DBF ALIAS 四中统计表
   kssj=SECONDS()
   SELECT 3
   GO 1
   FOR k=1 TO 4 &&每次需要改动
    @ 9,6 say k
   jl1=recno()
   PUBLIC ZL1
   ZL1=总量
   PUBLIC FL1
   FL1=分量
   czhi=9-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-74364290 &&10623470*(8-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,"运行时间提示")
四中和值8和合成分配
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-2 13:17 , Processed in 0.090341 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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