数学中国

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

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

  [复制链接]
 楼主| 发表于 2022-3-26 10:55 | 显示全部楼层
SELECT 1
USE d:\素数表文件\最密六生素数.DBF ALIAS 六素表
SELECT 2
USE d:\素数表文件\素数表亿新.DBF ALIAS 素数表
SELECT 3
USE d:\素数表文件\偶数表.DBF ALIAS 偶数表

SELECT 4
USE d:\素数表文件\六素分段统计.DBF ALIAS 六素统计
SELECT 5
USE d:\素数表文件\素数分段统计.DBF ALIAS 素数统计
kssj=SECONDS()
bwjm="一素加六中亿分段"

For i=1 TO 10
        @ 5,12 say i
        wd=bwjm+ALLTRIM(STR(i))
            SELECT 3
            DELETE ALL
            PACK   
             FOR j=1 TO i
        @ 15,22 say j
        SELECT  4   
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  5
        GO i-j+1
        zgs2=总个数
        fgs2=分个数
              
            SELECT 1
             GO zgs1-fgs1+1
                 FOR k1=1  TO  fgs1
                 
                 A=六素
                jl1=recno()
                   SELECT  2
                   GO  zgs2-fgs2+1
                   For k2=1 TO fgs2
                   jl2=recno()
                   B=素数
                  C=A+B
                   SELECT 3
                   APPEND BLANK   
                   REPLACE 偶数 WITH C   
                   SELECT 2
                   GO jl2+1
                   ENDFOR
                 SELECT 1
                 GO jl1+1
               ENDFOR   
         ENDFOR   
         SELECT 3
         USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
        USE d:\素数表文件\偶数表.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 d:\素数表文件\&wd
         
        USE IN &wd
        
      ENDFOR
      =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-26 19:59 | 显示全部楼层
SELECT 11
USE d:\素数表文件\无偶数表.DBF ALIAS 无偶表
SELECT 12
USE d:\素数表文件\合成数参照.DBF ALIAS 参照表

SELECT 1
USE d:\素数表文件\一素加六中亿分段1.DBF ALIAS 分段1
SELECT 2
USE d:\素数表文件\一素加六中亿分段2.DBF ALIAS 分段2
SELECT 3
USE d:\素数表文件\一素加六中亿分段3.DBF ALIAS 分段3
SELECT 4
USE d:\素数表文件\一素加六中亿分段4.DBF ALIAS 分段4
SELECT 5
USE d:\素数表文件\一素加六中亿分段5.DBF ALIAS 分段5

SELECT 6
USE d:\素数表文件\一素加六中亿分段6.DBF ALIAS 分段6
SELECT 7
USE d:\素数表文件\一素加六中亿分段7.DBF ALIAS 分段7
SELECT 8
USE d:\素数表文件\一素加六中亿分段8.DBF ALIAS 分段8
SELECT 9
USE d:\素数表文件\一素加六中亿分段9.DBF ALIAS 分段9
SELECT 10
USE d:\素数表文件\一素加六中亿分段10.DBF ALIAS 分段10
kssj=SECONDS()
bwjm="分段"
For j=4 to 10
      @ 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=1 to 2
        FOR m=1 TO 2280000
        SELECT 12
        GO m
        ou=偶数
        wou=(j-1)*9975000+(i-1)*9975000+ou
    &&  @ 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 11
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         ENDFOR
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-26 20:17 | 显示全部楼层
USE d:\素数表文件\无偶数表.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 d:\素数表文件\&重复记录
         
        USE IN &重复记录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-27 09:31 | 显示全部楼层
SELECT 1
USE d:\素数表文件\不能合成数头周.DBF ALIAS 不能合成数
SELECT 2
USE d:\素数表文件\不能合成数统计.DBF ALIAS 不能合成数统计表
kssj=SECONDS()

For i=1 to 500
       @ 5,12 say i
       n=i*1000020
     SELECT 1
     COUNT ALL FOR 无偶<n TO tj
          SELECT 2
          APPEND BLANK     &&增加一条空记录
         REPLACE 范围 WITH n
         REPLACE 总个数 WITH tj
ENDFOR
     =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-29 09:51 | 显示全部楼层
SELECT 1
USE D:\表示算法\标准域.dbf ALIAS 标准域
SELECT 2
USE D:\表示算法\余数表.dbf ALIAS 余数表
kssj=SECONDS()                      &&取出开始时间
      SELECT 1
       go 1
    && ys=0
       s1=0
   for i=1  to  8
       s1=s1+1
       SELECT 1
       go s1
       hzs1=互质数
          && jlh1=recn()
          && ys=mod(ys+hzs1,30)
       SELECT 1
        go 1
        s2=0
         for j=1  to  8
           s2=s2+1
             SELECT 1
             go s2
             hzs2=互质数
             && jlh2=recn()
              && ys=mod(ys+hzs2,30)
             SELECT 1
              go 1
               s3=0
               for l=1  to  8
               s3=s3+1
                 SELECT 1
                  go s3
                  hzs3=互质数
                  && jlh3=recn()
                  && ys=mod(ys+hzs3,30)
                    SELECT 1
                    go 1
                    s4=0
                  for m=1 to 8
                  s4=s4+1
                  SELECT 1
                  go s4
                   hzs4=互质数
                     && jlh4=recn()
                      SELECT 1
                    go 1
                    s5=0
                  for g=1 to 8
                  s5=s5+1
                  SELECT 1
                  go s5
                   hzs5=互质数
                   ys=mod(hzs1+hzs2+hzs3+hzs4+hzs5,30)
                    SELECT 2
                    APPEND BLANK
                    REPLACE 余数 WITH ys &&改成本次追加记录的字段              
                    endfor
                    endfor
                 endfor
            endfor
     endfor
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-30 09:27 | 显示全部楼层
SELECT 1
USE D:\逐步升级\素数式至19.dbf ALIAS 素数式19
kssj=SECONDS()                      &&取出开始时间
   FOR  j=1 TO 9699689  STEP 2
  y=j
        IF mod(y,3)=0 OR  mod(y,5)=0  OR  mod(y,7)=0 OR mod(y,11)=0   OR mod(y,13)=0  or mod(y,17)=0   OR  mod(y,19)=0
          ELSE
          SELECT 1
          APPEND BLANK
          REPLACE 素19 WITH y &&改成本次追加记录的字段
          ENDIF
   ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-30 09:34 | 显示全部楼层
SELECT 1
USE D:\逐步升级\素数式至19.dbf ALIAS 素式19  &&比制作表的素数值小(即下表)        原表在条件为真时
SELECT 2
USE D:\逐步升级\标记同跨度k生数.dbf ALIAS 同跨度k生数 &&比上边已筛除的素数值要大  在条件为假时参考表
SELECT 3
USE D:\逐步升级\临时素数式.dbf ALIAS 临素式  &&即将筛除素数余数的盛放表,与上表(参考表)素数值相同   在条件为真时制造表,即新表
SELECT 4
USE D:\逐步升级\素数式至23段落.dbf ALIAS 素式段落 &&比上边已筛除的素数值要大  在条件为真时参考表
kssj=SECONDS()   &&取出开始时间
SELECT 2
go 1
for wxhcs=1 to 2498 &&最外一层嵌套,根据表中记录条调节循环次数,wxhcs=外循环次数
  @ 15,20 say wxhcs  &&显示外循环次数
   SELECT 2
   jlt=记录条  &&给变量jlt赋值
   kd=跨度  &&给变量kd赋值
   qsh=起始号  &&给变量qsh赋值
         if  jlt>83
              for i=1  to  23
                  SELECT 1
                  go  qsh  &&起始号,把指针移动到开始位置
                      for  j=1  to   jlt
                       s19=素19
                       pdz=s19+(i-1)*9699690  &&pdz(判断值),等于素19+9699690的周期倍数
                       ys=mod(pdz,23)  &&ys(余数)等于判断值对素数23取模
                          if  ys=0
                          else
                           SELECT 3
                           APPEND BLANK
                           REPLACE 素式 WITH pdz
                           endif
                        SELECT 1
                        skip
                        endfor
                        SELECT 3
                        jlts=reccount()
                        go 1
                        ssq=素式 &&素式首
                        go  bottom
                        ssm=素式 &&素式末
                        if ssm-ssq=450 and jlts>82
                          SELECT 3
                          go 1
                          for k=1  to  jlts
                          ss=素式
                          SELECT 4
                           APPEND BLANK
                           REPLACE 素23 WITH ss
                           SELECT 3
                           skip
                           endfor
                         endif
                         select 3
                         DELETE ALL
                         PACK
              endfor
         endif
     SELECT 2
     skip
endfor  &&    最外一层嵌套
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")

回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-30 09:41 | 显示全部楼层
SELECT 1
USE D:\逐步升级\素数式至19.dbf ALIAS 素数式19
SELECT 2
USE D:\逐步升级\标记同跨度k生数.dbf ALIAS 同跨度
kssj=SECONDS()                      &&取出开始时间
   SELECT 1
   go 1
   FOR  j=1 TO 829440
      s11=素19
      jlz=recno()  &&记住位置
        kd=0 && 开始时,给kd赋值为0
        jll=0 &&记录条累计,即下边循环了几次
             do while kd<=450
             SELECT 1
             ssyd=素19
             kd=ssyd-s11
             jll=jll+1
             SELECT 1
             skip
             enddo
        if jll>=84
        SELECT 2
        APPEND BLANK
        REPLACE 跨度 WITH 450 &&改成本次追加记录的字段
        REPLACE 记录条 WITH jll-1 && 因为跳出内循环时jll已经在大于420的下一个位置(即多了一条记录),这里原来是jll-1,已经试验过了,的确是减1
        REPLACE 起始号 WITH jlz
        endif
     SELECT 1
     go  jlz+1
   ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2022-4-3 08:08 | 显示全部楼层
SELECT 1
USE d:\二加三或1加4\逆三生素数表.DBF ALIAS 三素表
SELECT 2
USE d:\二加三或1加4\逆三素统计表.DBF ALIAS 三素统计
SELECT 3
USE d:\二加三或1加4\偶数表新.DBF ALIAS 偶数表新

kssj=SECONDS()
bwjm="偶数周期表三加三逆"

For i=2381 TO 2383
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      && USE IN 3
      && USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
       SELECT 3
     
       DELETE ALL
       PACK
      
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  2
        GO i-j+1
        zgs2=总个数
        fgs2=分个数
           SELECT 1
           GO zgs1-fgs1+1
               FOR k1=1  TO  fgs1
               A=逆三中
               jl1=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 jl2=recno()
                 B=逆三中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 GO jl2+1
                 ENDFOR
               SELECT 1
               GO jl1+1
             ENDFOR   
          ENDFOR
       SELECT 3
       USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
      USE d:\二加三或1加4\偶数表新.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 d:\二加三或1加4\&wd
      
      USE IN &wd
      
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2022-4-3 08:14 | 显示全部楼层
截止2022年4月3日周日三月初三上午08:21分,热度74,回复1391,浏览量48548.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-3 10:53 , Processed in 0.078125 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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