数学中国

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

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

  [复制链接]
 楼主| 发表于 2021-4-23 21:27 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式19.DBF ALIAS 素数式19
SELECT 2
USE D:\二生素数分解\标记跨度为14的素数式.DBF ALIAS 标记素数式
kssj=SECONDS()
    For i=1 to 1658880
    @ 3,6 say i
     SELECT 1
     ss19=素式19
     jlh1=RECNO()
        FOR j=1 TO 6
        ss19b=素式19
        jlh2=RECNO()  && 记录指针位置
              IF ss19b-ss19=14
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 记录号 with jlh1  &&将B值付给素数式
              REPLACE 跨度 WITH 14
              REPLACE 素数 WITH 19
              REPLACE 素数式 WITH j
              ENDIF
        SELECT 1
        GO jlh2+1
        ENDFOR
      SELECT 1
      GO jlh1+1
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 21:28 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式7.DBF ALIAS 素数式7
SELECT 2
USE D:\二生素数分解\标记跨度为14的素数式.DBF ALIAS 标记素数式
SELECT 3
USE D:\二生素数分解\素数式表.DBF ALIAS 素数式表
kssj=SECONDS()
    For i=3 to 5
    @ 3,6 say i
     SELECT 2
      GO 1
      FOR j=1 TO 18
      sss=素数式
      jlh=记录号
                 IF sss=i               && jlh1=RECNO()
                 SELECT 1
                 GO jlh
                    FOR k=1  TO  i
                    ss7=素式7
                   SELECT  3  &&打开盛放素数式的表
                   APPEND BLANK     &&增加一条空记录
                   REPLACE 素数式 with ss7 &&将B值付给素数式
                   SELECT 1
                   SKIP
                   ENDFOR
                 ENDIF
             SELECT 2
            SKIP
      ENDFOR
  ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 21:28 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式7.DBF ALIAS 素数式7
SELECT 2
USE D:\二生素数分解\标记跨度为14的素数式.DBF ALIAS 标记素数式
SELECT 3
USE D:\二生素数分解\定位0点素数式表.DBF ALIAS 定位素数式
kssj=SECONDS()
    For i=3 to 5
    @ 3,6 say i
     SELECT 2
      GO 1
      FOR j=1 TO 18
      sss=素数式
      jlh=记录号
                 IF sss=i               && jlh1=RECNO()
                 SELECT 1
                 GO jlh
                    ss0=素式7
                    FOR k=1  TO  i
                    ss7=素式7
                    cz=ss7-ss0 && cz是差值,等于素式7与定位素式7的差,另一种素数式表示形式
                   SELECT  3  &&打开盛放素数式的表
                   APPEND BLANK     &&增加一条空记录
                   REPLACE 素数式 with cz &&将B值付给素数式
                   SELECT 1
                   SKIP
                   ENDFOR
                 ENDIF
             SELECT 2
            SKIP
      ENDFOR
  ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 22:07 | 显示全部楼层
跨度为14的素数式:(在至7的素数式中)
1, (0,6,8)→→→→→(0,6,14)
2,  (0,8,6)→→→→→(0,8,14)       1与2是互逆的
三生只留下2组,各种1组
3,  (0,6,2,6)→→→→(0,6,8,14)    留下4组     自对称
4,  (0,6,6,2)→→→→(0,6,12,14)  留下1组
5,  (0,2,6,6)→→→→(0,2,8,14)    留下1组      4与5互逆的
6,   (0,8,4,2)→→→→(0,8,12,14)  留下1组
7,   (0,2,4,8)→→→→(0,2,6,14)    留下1组     6与7互逆的
8,    (0,2,10,2)→→→(0,2,12,14)   留下2组     自对称
      3,4,5,6,7,8是4生素数
9,  (0,2,4,6,2)→→→(0,2,6,12,14)  留下3组
10,(0,2,6,4,2)→→→(0,2,8,12,14)  留下3组    9与10互逆的
      9,10是5生素数(相邻,即素数之间没有其他素数)

在这里分析了跨度为14的所有素数式形式。




回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 10:04 | 显示全部楼层
素数问题的解决是编程爱好者的源源不断的素材。涉及编程的方方面面。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 11:35 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式11.DBF ALIAS 素数式11
SELECT 2
USE D:\二生素数分解\标记跨度为14的素数式并并累计.DBF ALIAS 标记素数式及累计
kssj=SECONDS()
    For i=1 to 480
    @ 3,6 say i
     SELECT 1
     ss11=素式11
     jlh1=RECNO()
        FOR j=1 TO 6
        ss11b=素式11
        jlh2=RECNO()  && 记录指针位置
              IF ss11b-ss11=14
                 SELECT 1
                 GO jlh1
                 ss11l=素式11 && ss11l是素式11累计的缩写
                 s=0
                 FOR k=1 TO j
                 ss11lb=素式11
                 jlh3=RECNO()  
                 zl=ss11lb-ss11l
                 s=s+zl
                  SELECT 1
                  GO jlh3+1
                  endfor
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 记录号 with jlh1  &&将B值付给素数式
              REPLACE 跨度 WITH 14
              REPLACE 素数 WITH 11
              REPLACE 素式量 WITH j
              REPLACE 累计 WITH s
              ENDIF
        SELECT 1
        GO jlh2+1
        ENDFOR
      SELECT 1
      GO jlh1+1
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是分析二生素数的分布情况的程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 11:37 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式11.DBF ALIAS 素数式11
SELECT 2
USE D:\二生素数分解\标记跨度为14的素数式并2次累计.DBF ALIAS 标记素数式及累计2次
kssj=SECONDS()
    For i=1 to 480
    @ 3,6 say i
     SELECT 1
     ss11=素式11
     jlh1=RECNO()
        FOR j=1 TO 6
        ss11b=素式11
        jlh2=RECNO()  && 记录指针位置
              IF ss11b-ss11=14
                 SELECT 1
                 GO jlh1
                 ss11l=素式11 && ss11l是素式11累计的缩写
                 s=0
                 m=0
                 FOR k=1 TO j
                 ss11lb=素式11
                 jlh3=RECNO()  
                 zl=ss11lb-ss11l
                 s=s+zl
                 m=m+s
                  SELECT 1
                  GO jlh3+1
                  endfor
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 记录号 with jlh1  &&将B值付给素数式
              REPLACE 跨度 WITH 14
              REPLACE 素数 WITH 11
              REPLACE 素式量 WITH j
              REPLACE 累计2 WITH m
              ENDIF
        SELECT 1
        GO jlh2+1
        ENDFOR
      SELECT 1
      GO jlh1+1
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是用了二次累计法来区分不同k生素数式的程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 21:44 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\标记跨度为14的素数式并2次累计.DBF ALIAS 标记素数式及累计2
SELECT 2
USE D:\二生素数分解\累计2的分布值.DBF ALIAS 累计分布
kssj=SECONDS()
    SELECT 1
    For i=1 to 162
    @ 3,6 say i
     lj2=累计2
     jlh1=RECNO()
          ys=MOD(lj2,100)
          SELECT 2
          COUNT ALL FOR 累计=ys TO tj
              IF tj>0
              ELSE
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 累计 WITH lj2
              ENDIF
      SELECT 1
      GO jlh1+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 22:11 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\标记跨度为14的素数式并2次累计.DBF ALIAS 标记素数式及累计2
SELECT 2
USE D:\二生素数分解\累计2的分布值.DBF ALIAS 累计分布
SELECT 3
USE D:\二生素数分解\跨度14的裂解分布统计.DBF ALIAS 裂解分布统计
kssj=SECONDS()
  SELECT 2
  For i=1 to 13
    @ 3,6 say i
     lj=累计
            && jlh1=RECNO()
            SELECT 1
            GO 1
            COUNT ALL FOR lj=累计2 TO tj
              SELECT  3   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 跨度 WITH 14
              REPLACE 累计值 WITH lj
              REPLACE 素数 WITH 11
              REPLACE 统计 WITH tj
      SELECT 2
      skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
二生素数式裂解统计程序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-26 19:59 | 显示全部楼层
SELECT 1
USE D:\二生素数分解\素数式17.DBF ALIAS 素数式17
SELECT 2
USE D:\二生素数分解\标记跨度为14的素数式并2次累计.DBF ALIAS 标记素数式及累计2次
kssj=SECONDS()
    For i=1 to 92160
    @ 3,6 say i
     SELECT 1
     ss17=素式17
     jlh1=RECNO()
        FOR j=1 TO 6
        ss17b=素式17
        jlh2=RECNO()  && 记录指针位置
              IF ss17b-ss17=14
                 SELECT 1
                 GO jlh1
                 ss17l=素式17 && ss11l是素式11累计的缩写
                 s=0
                 m=0
                 FOR k=1 TO j
                 ss17lb=素式17
                 jlh3=RECNO()  
                 zl=ss17lb-ss17l
                 s=s+zl
                 m=m+s
                  SELECT 1
                  GO jlh3+1
                  endfor
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 记录号 with jlh1  &&将B值付给素数式
              REPLACE 跨度 WITH 14
              REPLACE 素数 WITH 17
              REPLACE 素式量 WITH j
              REPLACE 累计2 WITH m
              ENDIF
        SELECT 1
        GO jlh2+1
        ENDFOR
      SELECT 1
      GO jlh1+1
   endfor
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是素数为17时,跨度为14的素数式检索程序。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 20:56 , Processed in 0.089871 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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