数学中国

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

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

  [复制链接]
 楼主| 发表于 2021-5-26 16:14 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式.DBF ALIAS 素数式
kssj=SECONDS()
    For i=1 to 16
        FOR j=i+1  TO 17
        ss1=2*i
        ss2=2*j
       SELECT  1   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式0 WITH ss1 &&将B值付给素数式
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式0 WITH ss2 &&将B值付给素数式
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式5.DBF ALIAS 素数式5
kssj=SECONDS()
    For i=1 to 15
      FOR j=i+1  TO 16
         FOR h=j+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式5 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式5 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式5 WITH ss3 &&将B值付给素数式
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式6.DBF ALIAS 素数式6
kssj=SECONDS()
    For i=1 to 14
      FOR j=i+1  TO 15
         FOR h=j+1  TO 16
         FOR k=h+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式6 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式6 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式6 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式6 WITH ss4 &&将B值付给素数式
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式7.DBF ALIAS 素数式7
kssj=SECONDS()
    For i=1 to 13
      FOR j=i+1  TO 14
         FOR h=j+1  TO 15
         FOR k=h+1  TO 16
         FOR m=k+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss5 &&将B值付给素数式
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式8.DBF ALIAS 素数式8
kssj=SECONDS()
    For i=1 to 12
      FOR j=i+1  TO 13
         FOR h=j+1  TO 14
         FOR k=h+1  TO 15
         FOR m=k+1  TO 16
          FOR g=m+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          ss6=2*g
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式8 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式8 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式8 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式8 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式8 WITH ss5 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式8 WITH ss6 &&将B值付给素数式
          ENDFOR
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式9.DBF ALIAS 素数式9
kssj=SECONDS()
    For i=1 to 11
      FOR j=i+1  TO 12
         FOR h=j+1  TO 13
         FOR k=h+1  TO 14
         FOR m=k+1  TO 15
          FOR g=m+1  TO 16
          FOR l=g+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          ss6=2*g
          ss7=2*l
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss5 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss6 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式9 WITH ss7 &&将B值付给素数式
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式10.DBF ALIAS 素数式10
kssj=SECONDS()
    For i=1 to 10
      FOR j=i+1  TO 11
         FOR h=j+1  TO 12
         FOR k=h+1  TO 13
         FOR m=k+1  TO 14
          FOR g=m+1  TO 15
          FOR l=g+1  TO 16
          FOR u=l+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          ss6=2*g
          ss7=2*l
          ss8=2*u
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss5 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss6 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss7 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式10 WITH ss8 &&将B值付给素数式
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式11.DBF ALIAS 素数式11
kssj=SECONDS()
    For i=1 to 9
      FOR j=i+1  TO 10
         FOR h=j+1  TO 11
         FOR k=h+1  TO 12
         FOR m=k+1  TO 13
          FOR g=m+1  TO 14
          FOR l=g+1  TO 15
          FOR u=l+1  TO 16
          FOR v=u+1  TO 17
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          ss6=2*g
          ss7=2*l
          ss8=2*u
          ss9=2*v
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss5 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss6 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss7 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss8 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式11 WITH ss9 &&将B值付给素数式
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是跨度36的素数式(从4生到11生的制作程序,线型)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 16:25 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式.DBF ALIAS 素数式
SELECT 2
USE D:\素数式裂解\素数式4横.DBF ALIAS 素数式4横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss4=36
    For i=1 to 136
      ss2=素式0
      SKIP
      ss3=素式0
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式5.DBF ALIAS 素数式5
SELECT 2
USE D:\素数式裂解\素数式5横.DBF ALIAS 素数式5横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss5=36
    For i=1 to 680
      ss2=素式5
      SKIP
      ss3=素式5
      SKIP
      ss4=素式5
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式6.DBF ALIAS 素数式6
SELECT 2
USE D:\素数式裂解\素数式6横.DBF ALIAS 素数式6横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss6=36
    For i=1 to 2380
      ss2=素式6
      SKIP
      ss3=素式6
      SKIP
      ss4=素式6
      SKIP
      ss5=素式6
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式7.DBF ALIAS 素数式7
SELECT 2
USE D:\素数式裂解\素数式7横.DBF ALIAS 素数式7横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss7=36
    For i=1 to 6188
      ss2=素式7
      SKIP
      ss3=素式7
      SKIP
      ss4=素式7
      SKIP
      ss5=素式7
       SKIP
      ss6=素式7
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       REPLACE 素7 WITH ss7 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式8.DBF ALIAS 素数式8
SELECT 2
USE D:\素数式裂解\素数式8横.DBF ALIAS 素数式8横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss8=36
    For i=1 to 12376
      ss2=素式8
      SKIP
      ss3=素式8
      SKIP
      ss4=素式8
      SKIP
      ss5=素式8
       SKIP
      ss6=素式8
      skip
      ss7=素式8
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       REPLACE 素7 WITH ss7 &&将B值付给素数式
       REPLACE 素8 WITH ss8 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式9.DBF ALIAS 素数式9
SELECT 2
USE D:\素数式裂解\素数式9横.DBF ALIAS 素数式9横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss9=36
    For i=1 to 19448
      ss2=素式9
      SKIP
      ss3=素式9
      SKIP
      ss4=素式9
      SKIP
      ss5=素式9
       SKIP
      ss6=素式9
      skip
      ss7=素式9
       skip
      ss8=素式9
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       REPLACE 素7 WITH ss7 &&将B值付给素数式
       REPLACE 素8 WITH ss8 &&将B值付给素数式
       REPLACE 素9 WITH ss9 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式10.DBF ALIAS 素数式10
SELECT 2
USE D:\素数式裂解\素数式10横.DBF ALIAS 素数式10横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss10=36
    For i=1 to 24310
      ss2=素式10
      SKIP
      ss3=素式10
      SKIP
      ss4=素式10
      SKIP
      ss5=素式10
       SKIP
      ss6=素式10
      skip
      ss7=素式10
       skip
      ss8=素式10
      skip
      ss9=素式10
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       REPLACE 素7 WITH ss7 &&将B值付给素数式
       REPLACE 素8 WITH ss8 &&将B值付给素数式
       REPLACE 素9 WITH ss9 &&将B值付给素数式
       REPLACE 素10 WITH ss10 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式11.DBF ALIAS 素数式11
SELECT 2
USE D:\素数式裂解\素数式11横.DBF ALIAS 素数式11横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss11=36
    For i=1 to 24310
      ss2=素式11
      SKIP
      ss3=素式11
      SKIP
      ss4=素式11
      SKIP
      ss5=素式11
       SKIP
      ss6=素式11
      skip
      ss7=素式11
       skip
      ss8=素式11
      skip
      ss9=素式11
      skip
      ss10=素式11
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       REPLACE 素7 WITH ss7 &&将B值付给素数式
       REPLACE 素8 WITH ss8 &&将B值付给素数式
       REPLACE 素9 WITH ss9 &&将B值付给素数式
       REPLACE 素10 WITH ss10 &&将B值付给素数式
       REPLACE 素11 WITH ss11 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
制作k生素数式记录条(从4生到11生),
\(C_n^m=C_n^{n-m}\),可以推出跨度2k的,最多形成(k+1)/2+2的素数式
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 11:07 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式.DBF ALIAS 素数式
kssj=SECONDS()
    m=3
    For i=1 to 16+m
        FOR j=i+1  TO 17+m
        ss1=2*i
        ss2=2*j
       SELECT  1   &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式0 WITH ss1 &&将B值付给素数式
       APPEND BLANK     &&增加一条空记录
       REPLACE 素式0 WITH ss2 &&将B值付给素数式
       endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
SELECT 1
USE D:\素数式裂解\素数式7.DBF ALIAS 素数式7
kssj=SECONDS()
x=3 && m已经作为一个变量存在,所以文件大的没边,形成了1.9亿的记录条
    For i=1 to 13+x
      FOR j=i+1  TO 14+x
         FOR h=j+1  TO 15+x
         FOR k=h+1  TO 16+x
         FOR m=k+1  TO 17+x
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式7 WITH ss5 &&将B值付给素数式
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
因为大于等于5组和后,变量m已经用了,出现自嵌套问题,导致文件异常大,所以改变了变量,用x代替了m(这样避免了,同一个变量表示两种不同的角色矛盾)。
SELECT 1
USE D:\素数式裂解\素数式12.DBF ALIAS 素数式12
kssj=SECONDS()
    x=2
    For i=1 to 9+x
      FOR j=i+1  TO 10+x
         FOR h=j+1  TO 11+x
         FOR k=h+1  TO 12+x
         FOR m=k+1  TO 13+x
          FOR g=m+1  TO 14+x
          FOR l=g+1  TO 15+x
          FOR u=l+1  TO 16+x
          FOR v=u+1  TO 17+x
          FOR f=v+1  TO 18+x
          ss1=2*i
          ss2=2*j
          ss3=2*h
          ss4=2*k
          ss5=2*m
          ss6=2*g
          ss7=2*l
          ss8=2*u
          ss9=2*v
          ss10=2*f
          SELECT  1   &&打开盛放素数式的表
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss1 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss2 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss3 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss4 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss5 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss6 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss7 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss8 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss9 &&将B值付给素数式
          APPEND BLANK     &&增加一条空记录
          REPLACE 素式12 WITH ss10 &&将B值付给素数式
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
          ENDFOR
         ENDFOR
      endfor
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
因为这是在9组和的基础上又加了一层嵌套,所以x变成2,最中心的嵌套是18结尾,加2就是20了。
所以要因实而变。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 11:16 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式12.DBF ALIAS 素数式12
SELECT 2
USE D:\素数式裂解\素数式12横.DBF ALIAS 素数式12横
kssj=SECONDS()
    SELECT 1
    ss1=0
    ss12=42
    For i=1 to 184756
      ss2=素式12
      SKIP
      ss3=素式12
      SKIP
      ss4=素式12
      SKIP
      ss5=素式12
       SKIP
      ss6=素式12
      skip
      ss7=素式12
       skip
      ss8=素式12
      skip
      ss9=素式12
      skip
      ss10=素式12
      skip
      ss11=素式12
       SELECT  2  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss1 &&将B值付给素数式
       REPLACE 素2 WITH ss2 &&将B值付给素数式
       REPLACE 素3 WITH ss3 &&将B值付给素数式
       REPLACE 素4 WITH ss4 &&将B值付给素数式
       REPLACE 素5 WITH ss5 &&将B值付给素数式
       REPLACE 素6 WITH ss6 &&将B值付给素数式
       REPLACE 素7 WITH ss7 &&将B值付给素数式
       REPLACE 素8 WITH ss8 &&将B值付给素数式
       REPLACE 素9 WITH ss9 &&将B值付给素数式
       REPLACE 素10 WITH ss10 &&将B值付给素数式
       REPLACE 素11 WITH ss11 &&将B值付给素数式
       REPLACE 素12 WITH ss12 &&将B值付给素数式
       SELECT 1
       skip
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是制作素数式记录条程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 17:50 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式12横.DBF ALIAS 素数式12横
SELECT 2
USE D:\素数式裂解\余数表.DBF ALIAS 余数表
SELECT 3
USE D:\素数式裂解\素数表.DBF ALIAS 素数表
SELECT 4
USE D:\素数式裂解\素数式12横42剩.DBF ALIAS 素数式12横剩
kssj=SECONDS()
  DIMENSION ss(12)
  SELECT 1
  For i=1 to 184756 &&高位少了184
  @ 5,10 say i
    ss(1)=素1
    ss(2)=素2
    ss(3)=素3
    ss(4)=素4
    ss(5)=素5
    ss(6)=素6
    ss(7)=素7
    ss(8)=素8
    ss(9)=素9
    ss(10)=素10
    ss(11)=素11
    ss(12)=素12
       SELECT 3
       GO 1
       FOR j=1 TO 4
       SELECT 3
       sss=素数
       SELECT 2
       DELETE ALL
       pack   &&下一步要用到余数表,所以清空它
           FOR k=1 TO 12
           ys=MOD(ss(k),sss)
           @ 15,20 say ss(k)
           SELECT 2
           count all for ys=余数 to js  &&改成余数表中的字段名
                   IF js=0
                   SELECT 2
                   APPEND BLANK
                   REPLACE 余数 WITH ys
                   ENDIF
           ENDFOR
           SELECT 2
           zjl=RECCOUNT()  &&把余数表中的记录条数赋给变量zjl
           IF zjl=sss
           EXIT
           ENDIF
           SELECT 3
           skip
       ENDFOR
       IF j>4
       SELECT  4  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss(1) &&将B值付给素数式
       REPLACE 素2 WITH ss(2) &&将B值付给素数式
       REPLACE 素3 WITH ss(3) &&将B值付给素数式
       REPLACE 素4 WITH ss(4) &&将B值付给素数式
       REPLACE 素5 WITH ss(5) &&将B值付给素数式
       REPLACE 素6 WITH ss(6) &&将B值付给素数式
       REPLACE 素7 WITH ss(7) &&将B值付给素数式
       REPLACE 素8 WITH ss(8) &&将B值付给素数式
       REPLACE 素9 WITH ss(9) &&将B值付给素数式
       REPLACE 素10 WITH ss(10) &&将B值付给素数式
       REPLACE 素11 WITH ss(11) &&将B值付给素数式
       REPLACE 素12 WITH ss(12) &&将B值付给素数式
       ENDIF
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
进过几次改动,最终成功,开始时,没有做任何排查,都是直接输出的11,从素1到素12,从第一条记录到末尾的184756条记录,后来把ss=素数,改成了sss=素数(可能原因是程序默认为ss(k)=11,即把ss当了ss(12)=11,数组中的每个值都被11所取代),还有一个问题当时没有注意到,判断记录条数是否与素数值相等时,仍就用了ss,没有跟着改成sss,所以也没有获得结果,输出数据仍就错误。
总结经验:在设置变量时,一定注意是否用重复,这点非常重要;在数组中,数组变量后有无小括号,程序会认为是同一变量,切记,切记,否则就出错误结果。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 18:03 | 显示全部楼层
白新岭 发表于 2021-5-29 17:50
SELECT 1
USE D:\素数式裂解\素数式12横.DBF ALIAS 素数式12横
SELECT 2

编程这东西有时真的是逼出来的,没有办法,你想获得数据,在Excel中无法获得,只能求助于编程了,不会的,只能从网上搜寻,一般情况下,你所想的就是那么回事,好像设计程序语言时(代码时)也是这么想的,心有灵犀一点通,一点都不假。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 19:00 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式10横.DBF ALIAS 素数式10横
SELECT 2
USE D:\素数式裂解\余数表.DBF ALIAS 余数表
SELECT 3
USE D:\素数式裂解\素数表.DBF ALIAS 素数表
SELECT 4
USE D:\素数式裂解\素数式12横42剩.DBF ALIAS 素数式12横剩
kssj=SECONDS()
  DIMENSION ss(10)
  SELECT 1
  For i=1 to 125970
  @ 5,10 say i
    ss(1)=素1
    ss(2)=素2
    ss(3)=素3
    ss(4)=素4
    ss(5)=素5
    ss(6)=素6
    ss(7)=素7
    ss(8)=素8
    ss(9)=素9
    ss(10)=素10
     && ss(11)=素11
     && ss(12)=素12
       SELECT 3
       GO 1
       FOR j=1 TO 3 &&在12生素数式时,用到素数11,10生素数式用到素数7就可以了
       SELECT 3
       sss=素数
       SELECT 2
       DELETE ALL
       pack   &&下一步要用到余数表,所以清空它
           FOR k=1 TO 10 &&此循环值到k生素数式中的k值即可
           ys=MOD(ss(k),sss)
           && @ 15,20 say ss(k),不需要了,原先是想了解ss(k)是否随循环变量而改变,观察用
           SELECT 2
           count all for ys=余数 to js  &&改成余数表中的字段名
                   IF js=0
                   SELECT 2
                   APPEND BLANK
                   REPLACE 余数 WITH ys
                   ENDIF
           ENDFOR
           SELECT 2
           zjl=RECCOUNT()  &&把余数表中的记录条数赋给变量zjl
           IF zjl=sss
           EXIT
           ENDIF
           SELECT 3
           skip
       ENDFOR
       IF j>3  &&与参与素数的个数相关联
       SELECT  4  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss(1) &&将B值付给素数式
       REPLACE 素2 WITH ss(2) &&将B值付给素数式
       REPLACE 素3 WITH ss(3) &&将B值付给素数式
       REPLACE 素4 WITH ss(4) &&将B值付给素数式
       REPLACE 素5 WITH ss(5) &&将B值付给素数式
       REPLACE 素6 WITH ss(6) &&将B值付给素数式
       REPLACE 素7 WITH ss(7) &&将B值付给素数式
       REPLACE 素8 WITH ss(8) &&将B值付给素数式
       REPLACE 素9 WITH ss(9) &&将B值付给素数式
       REPLACE 素10 WITH ss(10) &&将B值付给素数式
        && REPLACE 素11 WITH ss(11) &&将B值付给素数式
        && REPLACE 素12 WITH ss(12) &&将B值付给素数式
       ENDIF
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是一个通用的筛选素数式程序(12生素数式以下,当然可以增加,只不过需要同时稍微改动一下程序)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 05:34 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式9横.DBF ALIAS 素数式9横
SELECT 2
USE D:\素数式裂解\余数表.DBF ALIAS 余数表
SELECT 3
USE D:\素数式裂解\素数表.DBF ALIAS 素数表
SELECT 4
USE D:\素数式裂解\素数式12横42剩.DBF ALIAS 素数式12横剩
kssj=SECONDS()
  DIMENSION ss(9)
  SELECT 1
  For i=1 to 77520
  @ 5,10 say i
    ss(1)=素1
    ss(2)=素2
    ss(3)=素3
    ss(4)=素4
    ss(5)=素5
    ss(6)=素6
    ss(7)=素7
    ss(8)=素8
    ss(9)=素9
     && ss(10)=素10
     && ss(11)=素11
     && ss(12)=素12
       SELECT 3
       GO 1
       FOR j=1 TO 3 &&在12生素数式时,用到素数11,10生素数式用到素数7就可以了
       SELECT 3
       sss=素数
       SELECT 2
       DELETE ALL
       pack   &&下一步要用到余数表,所以清空它
           FOR k=1 TO 9 &&此循环值到k生素数式中的k值即可
           ys=MOD(ss(k),sss)
           && @ 15,20 say ss(k),不需要了,原先是想了解ss(k)是否随循环变量而改变,观察用
           SELECT 2
           count all for ys=余数 to js  &&改成余数表中的字段名
                   IF js=0
                   SELECT 2
                   APPEND BLANK
                   REPLACE 余数 WITH ys
                   ENDIF
           ENDFOR
           SELECT 2
           zjl=RECCOUNT()  &&把余数表中的记录条数赋给变量zjl
           IF zjl=sss
           EXIT
           ENDIF
           SELECT 3
           skip
       ENDFOR
       IF j>3  &&与参与素数的个数相关联
       SELECT  4  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss(1) &&将B值付给素数式
       REPLACE 素2 WITH ss(2) &&将B值付给素数式
       REPLACE 素3 WITH ss(3) &&将B值付给素数式
       REPLACE 素4 WITH ss(4) &&将B值付给素数式
       REPLACE 素5 WITH ss(5) &&将B值付给素数式
       REPLACE 素6 WITH ss(6) &&将B值付给素数式
       REPLACE 素7 WITH ss(7) &&将B值付给素数式
       REPLACE 素8 WITH ss(8) &&将B值付给素数式
       REPLACE 素9 WITH ss(9) &&将B值付给素数式
        && REPLACE 素10 WITH ss(10) &&将B值付给素数式
        && REPLACE 素11 WITH ss(11) &&将B值付给素数式
        && REPLACE 素12 WITH ss(12) &&将B值付给素数式
       ENDIF
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
编程与素数有关问题相辅相成,相得益彰,互相促进。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 05:41 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式8横.DBF ALIAS 素数式8横
SELECT 2
USE D:\素数式裂解\余数表.DBF ALIAS 余数表
SELECT 3
USE D:\素数式裂解\素数表.DBF ALIAS 素数表
SELECT 4
USE D:\素数式裂解\素数式12横42剩.DBF ALIAS 素数式12横剩
kssj=SECONDS()
  DIMENSION ss(8)
  SELECT 1
  For i=1 to 38760
  @ 5,10 say i
    ss(1)=素1
    ss(2)=素2
    ss(3)=素3
    ss(4)=素4
    ss(5)=素5
    ss(6)=素6
    ss(7)=素7
    ss(8)=素8
     && ss(9)=素9
     && ss(10)=素10
     && ss(11)=素11
     && ss(12)=素12
       SELECT 3
       GO 1
       FOR j=1 TO 3 &&在12生素数式时,用到素数11,10生素数式用到素数7就可以了
       SELECT 3
       sss=素数
       SELECT 2
       DELETE ALL
       pack   &&下一步要用到余数表,所以清空它
           FOR k=1 TO 8 &&此循环值到k生素数式中的k值即可
           ys=MOD(ss(k),sss)
           && @ 15,20 say ss(k),不需要了,原先是想了解ss(k)是否随循环变量而改变,观察用
           SELECT 2
           count all for ys=余数 to js  &&改成余数表中的字段名
                   IF js=0
                   SELECT 2
                   APPEND BLANK
                   REPLACE 余数 WITH ys
                   ENDIF
           ENDFOR
           SELECT 2
           zjl=RECCOUNT()  &&把余数表中的记录条数赋给变量zjl
           IF zjl=sss
           EXIT
           ENDIF
           SELECT 3
           skip
       ENDFOR
       IF j>3  &&与参与素数的个数相关联
       SELECT  4  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss(1) &&将B值付给素数式
       REPLACE 素2 WITH ss(2) &&将B值付给素数式
       REPLACE 素3 WITH ss(3) &&将B值付给素数式
       REPLACE 素4 WITH ss(4) &&将B值付给素数式
       REPLACE 素5 WITH ss(5) &&将B值付给素数式
       REPLACE 素6 WITH ss(6) &&将B值付给素数式
       REPLACE 素7 WITH ss(7) &&将B值付给素数式
       REPLACE 素8 WITH ss(8) &&将B值付给素数式
        && REPLACE 素9 WITH ss(9) &&将B值付给素数式
        && REPLACE 素10 WITH ss(10) &&将B值付给素数式
        && REPLACE 素11 WITH ss(11) &&将B值付给素数式
        && REPLACE 素12 WITH ss(12) &&将B值付给素数式
       ENDIF
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
没有对比,没有伤害,在编程上比这猫儿画虎还是相当必要的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 05:49 | 显示全部楼层
SELECT 1
USE D:\素数式裂解\素数式7横.DBF ALIAS 素数式7横 &&与需要处理的表名称相对应
SELECT 2
USE D:\素数式裂解\余数表.DBF ALIAS 余数表
SELECT 3
USE D:\素数式裂解\素数表.DBF ALIAS 素数表
SELECT 4
USE D:\素数式裂解\素数式12横42剩.DBF ALIAS 素数式12横剩
kssj=SECONDS()
  DIMENSION ss(7) &&改成本表字段数,即一条记录包含多少个字段
  SELECT 1
  For i=1 to 15504 &&改成本次处理表的记录条数
  @ 5,10 say i
    ss(1)=素1
    ss(2)=素2
    ss(3)=素3
    ss(4)=素4
    ss(5)=素5
    ss(6)=素6
    ss(7)=素7
     && ss(8)=素8
     && ss(9)=素9
     && ss(10)=素10
     && ss(11)=素11
     && ss(12)=素12
       SELECT 3
       GO 1
       FOR j=1 TO 3 &&在12生素数式时,用到素数11,10生素数式用到素数7就可以了
       SELECT 3
       sss=素数
       SELECT 2
       DELETE ALL
       pack   &&下一步要用到余数表,所以清空它
           FOR k=1 TO 7 &&此循环值到k生素数式中的k值即可
           ys=MOD(ss(k),sss)
           && @ 15,20 say ss(k),不需要了,原先是想了解ss(k)是否随循环变量而改变,观察用
           SELECT 2
           count all for ys=余数 to js  &&改成余数表中的字段名
                   IF js=0
                   SELECT 2
                   APPEND BLANK
                   REPLACE 余数 WITH ys
                   ENDIF
           ENDFOR
           SELECT 2
           zjl=RECCOUNT()  &&把余数表中的记录条数赋给变量zjl
           IF zjl=sss
           EXIT
           ENDIF
           SELECT 3
           skip
       ENDFOR
       IF j>3  &&与参与素数的个数相关联
       SELECT  4  &&打开盛放素数式的表
       APPEND BLANK     &&增加一条空记录
       REPLACE 素1 WITH ss(1) &&将B值付给素数式
       REPLACE 素2 WITH ss(2) &&将B值付给素数式
       REPLACE 素3 WITH ss(3) &&将B值付给素数式
       REPLACE 素4 WITH ss(4) &&将B值付给素数式
       REPLACE 素5 WITH ss(5) &&将B值付给素数式
       REPLACE 素6 WITH ss(6) &&将B值付给素数式
       REPLACE 素7 WITH ss(7) &&将B值付给素数式
        && REPLACE 素8 WITH ss(8) &&将B值付给素数式
        && REPLACE 素9 WITH ss(9) &&将B值付给素数式
        && REPLACE 素10 WITH ss(10) &&将B值付给素数式
        && REPLACE 素11 WITH ss(11) &&将B值付给素数式
        && REPLACE 素12 WITH ss(12) &&将B值付给素数式
       ENDIF
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 18:38 , Processed in 0.093931 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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