数学中国

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

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

  [复制链接]
发表于 2021-10-30 17:54 | 显示全部楼层
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 170
USE G:\三角递增法\偶数周期表170.DBF ALIAS 偶周期170
SELECT 171
USE G:\三角递增法\偶数周期表171.DBF ALIAS 偶周期171
SELECT 172
USE G:\三角递增法\偶数周期表172.DBF ALIAS 偶周期172
SELECT 173
USE G:\三角递增法\偶数周期表173.DBF ALIAS 偶周期173
SELECT 174
USE G:\三角递增法\偶数周期表174.DBF ALIAS 偶周期174
SELECT 175
USE G:\三角递增法\偶数周期表175.DBF ALIAS 偶周期175
SELECT 176
USE G:\三角递增法\偶数周期表176.DBF ALIAS 偶周期176
SELECT 177
USE G:\三角递增法\偶数周期表177.DBF ALIAS 偶周期177
SELECT 178
USE G:\三角递增法\偶数周期表178.DBF ALIAS 偶周期178
SELECT 179
USE G:\三角递增法\偶数周期表179.DBF ALIAS 偶周期179
SELECT 180
USE G:\三角递增法\偶数周期表180.DBF ALIAS 偶周期180
SELECT 181
USE G:\三角递增法\偶数周期表181.DBF ALIAS 偶周期181
SELECT 182
USE G:\三角递增法\偶数周期表182.DBF ALIAS 偶周期182
SELECT 183
USE G:\三角递增法\偶数周期表183.DBF ALIAS 偶周期183
SELECT 184
USE G:\三角递增法\偶数周期表184.DBF ALIAS 偶周期184
SELECT 185
USE G:\三角递增法\偶数周期表185.DBF ALIAS 偶周期185
SELECT 186
USE G:\三角递增法\偶数周期表186.DBF ALIAS 偶周期186
SELECT 187
USE G:\三角递增法\偶数周期表187.DBF ALIAS 偶周期187
kssj=SECONDS()
bwjm="偶周期"
For j=170 to 187
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区
&& USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶周期"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶周期"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-30 17:54 | 显示全部楼层
CLOSE DATA
USE G:\三角递增法\无偶数表总表.dbf && 设源表的名称为"表1"
P=''
FOR K=1 TO FCOUNT()
P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
ENDFOR

SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF G:\三角递增法\相同记录数表总11 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
回复 支持 反对

使用道具 举报

发表于 2021-10-30 17:55 | 显示全部楼层
SELECT 1
USE G:\三角递增法\相同记录数表总11.DBF ALIAS 相同记录表11
SELECT 2
USE G:\三角递增法\无偶最终结果表新总11.DBF ALIAS 无偶结果表新11
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 1408254
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
总区间段,11的三步曲完成,
回复 支持 反对

使用道具 举报

发表于 2021-10-30 20:53 | 显示全部楼层
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 1
USE G:\三角递增法\偶数周期表1.DBF ALIAS 偶周期1
SELECT 2
USE G:\三角递增法\偶数周期表2.DBF ALIAS 偶周期2
SELECT 3
USE G:\三角递增法\偶数周期表3.DBF ALIAS 偶周期3
SELECT 4
USE G:\三角递增法\偶数周期表4.DBF ALIAS 偶周期4
SELECT 5
USE G:\三角递增法\偶数周期表5.DBF ALIAS 偶周期5
SELECT 6
USE G:\三角递增法\偶数周期表6.DBF ALIAS 偶周期6
SELECT 7
USE G:\三角递增法\偶数周期表7.DBF ALIAS 偶周期7
SELECT 8
USE G:\三角递增法\偶数周期表8.DBF ALIAS 偶周期8
SELECT 9
USE G:\三角递增法\偶数周期表9.DBF ALIAS 偶周期9
SELECT 10
USE G:\三角递增法\偶数周期表10.DBF ALIAS 偶周期10
SELECT 11
USE G:\三角递增法\偶数周期表11.DBF ALIAS 偶周期11
SELECT 12
USE G:\三角递增法\偶数周期表12.DBF ALIAS 偶周期12
SELECT 13
USE G:\三角递增法\偶数周期表13.DBF ALIAS 偶周期13
SELECT 14
USE G:\三角递增法\偶数周期表14.DBF ALIAS 偶周期14
SELECT 15
USE G:\三角递增法\偶数周期表15.DBF ALIAS 偶周期15
SELECT 16
USE G:\三角递增法\偶数周期表16.DBF ALIAS 偶周期16
SELECT 17
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期17
SELECT 18
USE G:\三角递增法\偶数周期表18.DBF ALIAS 偶周期18
kssj=SECONDS()
bwjm="偶周期"
For j=1 to 18
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区
&& USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶周期"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶周期"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-30 20:53 | 显示全部楼层
CLOSE DATA
USE G:\三角递增法\无偶数表总表.dbf && 设源表的名称为"表1"
P=''
FOR K=1 TO FCOUNT()
P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
ENDFOR

SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF G:\三角递增法\相同记录数表总1 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
回复 支持 反对

使用道具 举报

发表于 2021-10-30 20:54 | 显示全部楼层
SELECT 1
USE G:\三角递增法\相同记录数表总1.DBF ALIAS 相同记录表1
SELECT 2
USE G:\三角递增法\无偶最终结果表新总1.DBF ALIAS 无偶结果表新1
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 4387838
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-30 20:55 | 显示全部楼层
SELECT 1
USE G:\三角递增法\相同记录数表总1.DBF ALIAS 相同记录表1
SELECT 2
USE G:\三角递增法\无偶最终结果表新总1.DBF ALIAS 无偶结果表新1
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 4387838
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-30 20:55 | 显示全部楼层
SELECT 1
USE G:\三角递增法\无偶最终结果表新总1.DBF ALIAS 无偶总新1
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=1 to 378
      @ 3,6 say j
      fw=j*1000000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-10-30 20:59 | 显示全部楼层
在三步曲中,还有一个插曲,没有发放,就是把第一区间段的单个偶数都导出来,它们是无解的,也是唯一的单偶数,其余无解偶数都是双记录(单记录者,是有解的)。
       最后增加到第四步,统计无偶的个数(每个区间段)。
回复 支持 反对

使用道具 举报

发表于 2021-10-31 07:03 | 显示全部楼层
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 17
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期17
SELECT 18
USE G:\三角递增法\偶数周期表18.DBF ALIAS 偶周期18
SELECT 19
USE G:\三角递增法\偶数周期表19.DBF ALIAS 偶周期19
SELECT 20
USE G:\三角递增法\偶数周期表20.DBF ALIAS 偶周期20
SELECT 21
USE G:\三角递增法\偶数周期表21.DBF ALIAS 偶周期21
SELECT 22
USE G:\三角递增法\偶数周期表22.DBF ALIAS 偶周期22
SELECT 23
USE G:\三角递增法\偶数周期表23.DBF ALIAS 偶周期23
SELECT 24
USE G:\三角递增法\偶数周期表24.DBF ALIAS 偶周期24
SELECT 25
USE G:\三角递增法\偶数周期表25.DBF ALIAS 偶周期25
SELECT 26
USE G:\三角递增法\偶数周期表26.DBF ALIAS 偶周期26
SELECT 27
USE G:\三角递增法\偶数周期表27.DBF ALIAS 偶周期27
SELECT 28
USE G:\三角递增法\偶数周期表28.DBF ALIAS 偶周期28
SELECT 29
USE G:\三角递增法\偶数周期表29.DBF ALIAS 偶周期29
SELECT 30
USE G:\三角递增法\偶数周期表30.DBF ALIAS 偶周期30
SELECT 31
USE G:\三角递增法\偶数周期表31.DBF ALIAS 偶周期31
SELECT 32
USE G:\三角递增法\偶数周期表32.DBF ALIAS 偶周期32
SELECT 33
USE G:\三角递增法\偶数周期表33.DBF ALIAS 偶周期33
SELECT 34
USE G:\三角递增法\偶数周期表34.DBF ALIAS 偶周期34
kssj=SECONDS()
bwjm="偶周期"
For j=17 to 34
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区
&& USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 5,12 say i
      n=i
      s=0
      IF MOD(n,5)=1
      s=s+30
      ENDIF
      IF MOD(n,5)=2
      s=s+90
      ENDIF
      IF MOD(n,5)=3
      s=s+120
      ENDIF
      IF MOD(n,5)=4
      s=s+180
      ENDIF
      IF MOD(n,5)=0
      s=s+210
      ENDIF
     
      wou=INT((n-1)/5)*210+s
      SELECT "偶周期"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "偶周期"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 08:30 , Processed in 0.086796 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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