数学中国

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

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

  [复制链接]
发表于 2021-7-6 22:48 | 显示全部楼层
SELECT 1
USE D:\vfp温习\L6三生素数24表新.DBF ALIAS 三生素数
SELECT 2
USE D:\vfp温习\二生素数的数量统计.DBF ALIAS 二生统计

kssj=SECONDS()
  SELECT 1
  For i=1 to 9 && 这个循环13次,是因为累计2的分布值有13条记录,代表13种素数式的排列(2-5生)
    @ 3,6 say i
     fw=10^i
            && jlh1=RECNO()
            SELECT 1
            GO 1
            COUNT ALL FOR fw>三中24 TO tj
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 范围 WITH fw
              REPLACE 跨度 WITH 6
              REPLACE 统计 WITH tj
              REPLACE k生 WITH 3
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
对三生素数的数量进行统计,以10^n为界线。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-7 06:46 | 显示全部楼层
SELECT 1
USE D:\VFP温习\素数表亿整理.DBF ALIAS 素数表亿整理
SELECT 2
USE D:\VFP温习\最密4生素数中项.DBF ALIAS 四生素数表
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 50876524
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    SKIP 1
    PUBLIC B
    B=素数
    SKIP 1
    PUBLIC C
    C=素数
    SKIP 1
    PUBLIC D
    D=素数
    cj1=B-A  &&求前后两个素数的差值
    cj2=C-B  &&求前后两个素数的差值
    cj3=D-C  &&求前后两个素数的差值
    IF cj1=2 AND cj2=4 AND cj3=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 素4中 WITH A+4          &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
搜寻最密4生素数的中项程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-7 06:50 | 显示全部楼层
SELECT 1
USE D:\vfp温习\最密4生素数中项.DBF ALIAS 四生素数
SELECT 2
USE D:\vfp温习\二生素数的数量统计.DBF ALIAS 二生统计

kssj=SECONDS()
  SELECT 1
  For i=1 to 9 && 这个循环13次,是因为累计2的分布值有13条记录,代表13种素数式的排列(2-5生)
    @ 3,6 say i
     fw=10^i
            && jlh1=RECNO()
            SELECT 1
            GO 1
            COUNT ALL FOR fw>素4中 TO tj
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 范围 WITH fw
              REPLACE 跨度 WITH 8
              REPLACE 统计 WITH tj
              REPLACE k生 WITH 4
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
统计10的n次方内的四生素数的数量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-7 18:33 | 显示全部楼层
SELECT 1
USE D:\VFP温习\素数表亿整理.DBF ALIAS 素数表亿整理
SELECT 2
USE D:\VFP温习\最密5生素数中项.DBF ALIAS 五生素数表
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 50876520
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    SKIP 1
    PUBLIC B
    B=素数
    SKIP 1
    PUBLIC C
    C=素数
    SKIP 1
    PUBLIC D
    D=素数
    SKIP 1
    PUBLIC E
    E=素数
    cj1=B-A  &&求前后两个素数的差值
    cj2=C-B  &&求前后两个素数的差值
    cj3=D-C  &&求前后两个素数的差值
    cj4=E-D  &&求前后两个素数的差值
    IF cj1=2 AND cj2=4 AND cj3=2 AND cj4=4
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 素5中 WITH A+6         &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
搜寻最密5生素数的程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-7 18:37 | 显示全部楼层
SELECT 1
USE D:\vfp温习\最密5生素数中项.DBF ALIAS 五生素数
SELECT 2
USE D:\vfp温习\二生素数的数量统计.DBF ALIAS 二生统计

kssj=SECONDS()
  SELECT 1
  For i=1 to 9 && 这个循环13次,是因为累计2的分布值有13条记录,代表13种素数式的排列(2-5生)
    @ 3,6 say i
     fw=10^i
            && jlh1=RECNO()
            SELECT 1
            GO 1
            COUNT ALL FOR fw>素5中 TO tj
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 范围 WITH fw
              REPLACE 跨度 WITH 12
              REPLACE 统计 WITH tj
              REPLACE k生 WITH 5
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
统计最密5生素数的数量(以10的n次方为限)
回复 支持 反对

使用道具 举报

发表于 2021-7-9 09:23 | 显示全部楼层
SELECT 1
USE D:\VFP温习\素数表亿整理.DBF ALIAS 素数表亿整理
SELECT 2
USE D:\VFP温习\最密6生素数中项.DBF ALIAS 六生素数表
kssj=SECONDS()
SELECT  1
GO 1
For i=1 to 50876515
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=素数
    SKIP 1
    PUBLIC B
    B=素数
    SKIP 1
    PUBLIC C
    C=素数
    SKIP 1
    PUBLIC D
    D=素数
    SKIP 1
    PUBLIC E
    E=素数
     SKIP 1
    PUBLIC F
    F=素数
    cj1=B-A  &&求前后两个素数的差值
    cj2=C-B  &&求前后两个素数的差值
    cj3=D-C  &&求前后两个素数的差值
    cj4=E-D  &&求前后两个素数的差值
    cj5=F-E  &&求前后两个素数的差值
    IF cj1=4 AND cj2=2 AND cj3=4 AND cj4=2 AND cj5=4
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 素6中 WITH A+8        &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
搜寻最密6生素数的程序。
回复 支持 反对

使用道具 举报

发表于 2021-7-9 09:26 | 显示全部楼层
SELECT 1
USE D:\vfp温习\最密6生素数中项.DBF ALIAS 六生素数
SELECT 2
USE D:\vfp温习\二生素数的数量统计.DBF ALIAS 二生统计

kssj=SECONDS()
  SELECT 1
  For i=1 to 9 && 这个循环13次,是因为累计2的分布值有13条记录,代表13种素数式的排列(2-5生)
    @ 3,6 say i
     fw=10^i
            && jlh1=RECNO()
            SELECT 1
            GO 1
            COUNT ALL FOR fw>素6中 TO tj
              SELECT  2   &&打开盛放素数式的表
              APPEND BLANK     &&增加一条空记录
              REPLACE 范围 WITH fw
              REPLACE 跨度 WITH 16
              REPLACE 统计 WITH tj
              REPLACE k生 WITH 6
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
统计最密6生素数的数量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-9 11:24 | 显示全部楼层
SELECT 1
USE D:\素数式系数\素数表十亿.dbf ALIAS 素数表
kssj=SECONDS()  &&取出开始时间
s=1.0000000000000000
SELECT 1
  GO 9
  A=素数
  s=s*A*(A-14)/(A-7)^2
  SKIP 1
        FOR  j=1 TO 50876318
        SELECT 1
        B=素数
        s=s*B*(B-14)/(B-7)^2
        SELECT 1  
        SKIP
        ENDFOR

?s
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
最密7生素数的中项和合成数的数量公式中,连乘式的值=0.4489235858868680,∏\({P(P-14)}\over(P-7)^2\),P≥23,P∈素数,P→∞。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-10 21:25 | 显示全部楼层
SELECT 1
USE D:\vfp温习\四生素数三连体参照表.DBF  ALIAS 四三参照表
SELECT 2
USE D:\vfp温习\素数表亿内.DBF ALIAS 素数表亿
SELECT 3
USE D:\vfp温习\四生素数三连体中项.DBF ALIAS 四生素数三连体
kssj=SECONDS()                      &&取出开始时间
    FOR i=1 TO 33300
     @22,20 SAY i
     SELECT 1
     GO 1
     FOR k=1 TO 4
     ssc=四三参
     bpz=ssc+(i-1)*30030&&给被判断值置数,以循环值做变量。
     Kf=INT(SQRT(bpz))                   &&求出被判断值的开方根
        SELECT 2                     &&打开素数表
        LOCATE FOR 素数>=kf                 &&根据开方根,查找最大素数
        DO CASE
        CASE EOF()                          &&如果超出素数表最后一条记录
        GO BOTTOM
        CASE 素数>kf                        &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
        SKIP -1
        ENDCASE
        SSS=RECNO()                         &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
        GO 7  
        ss=素数                           &&从第二条记录开始读取素数(3)
        FOR j=1 TO SSS-6  
        ys=MOD(bpz,ss)                    &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
        IF ys=0 OR ys=MOD(2,ss) OR ys=MOD(6,ss) OR ys=MOD(8,ss) OR ys=MOD(90,ss) OR ys=MOD(92,ss) OR ys=MOD(96,ss) OR ys=MOD(98,ss) OR ys=MOD(120,ss) OR ys=MOD(122,ss) OR ys=MOD(126,ss) OR ys=MOD(128,ss)
        EXIT                                &&因为符合条件,则做完相应工作后跳出内循环
        ENDIF
        SELECT 2
        SKIP                               &&素数表指针向下移动一个
        ENDFOR
        IF j>sss-6
        SELECT 3              &&打开保存求解结果的信息表
        APPEND BLANK                        &&增加一条空记录
        REPLACE 四3末 WITH bpz             &&将被判断值保存到被判断值字段中(被判断值数据栏)
        ENDIF
        SELECT 1
        SKIP
        ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
筛选四生素数三连体。(0,30,90)邻距表示法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-10 22:07 | 显示全部楼层
上楼的编程仍就错误。没有获得4生素数三连体。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 09:24 , Processed in 0.079738 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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