数学中国

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

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

  [复制链接]
 楼主| 发表于 2021-8-3 19:41 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生成元至7.dbf ALIAS 二生成元7
SELECT 2
USE D:\二生素数中项合成\二生成元至11.dbf ALIAS 二生成元11
kssj=SECONDS()  &&取出开始时间
FOR  i=1 TO 11  &&又遇到以前类似事情,外循环变量用了j与下面的内循环变量一致,所以提示0不能做除数。
    SELECT 1
    GO 1
    FOR j=1 TO 15
        ery7=二元7
        ssy=ery7+(i-1)*210
        ys=MOD(ssy,11)
        IF ys=0 OR ys=2  && OR ys=MOD(2,11) OR ys=MOD(4,11)
        else
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE 二元11 WITH ssy
      ENDIF  
      SELECT 1
      SKIP
    ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是制作孪生素数生成元程序由7至11.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-3 20:37 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生成元至11.dbf ALIAS 二生成元11
SELECT 2
USE D:\二生素数中项合成\二生成元至13.dbf ALIAS 二生成元13
kssj=SECONDS()  &&取出开始时间
FOR  i=1 TO 13  &&又遇到以前类似事情,外循环变量用了j与下面的内循环变量一致,所以提示0不能做除数。
    SELECT 1
    GO 1
    FOR j=1 TO 135
        ery11=二元11
        ssy=ery11+(i-1)*2310
        ys=MOD(ssy,13)
        IF ys=0 OR ys=2  && OR ys=MOD(2,11) OR ys=MOD(4,11)
        else
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE 二元13 WITH ssy
      ENDIF  
      SELECT 1
      SKIP
    ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是制作孪生素数生成元程序由11至13.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-3 20:43 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生成元至13.dbf ALIAS 二生成元13
SELECT 2
USE D:\二生素数中项合成\二生成元至17.dbf ALIAS 二生成元17
kssj=SECONDS()  &&取出开始时间
FOR  i=1 TO 17  &&又遇到以前类似事情,外循环变量用了j与下面的内循环变量一致,所以提示0不能做除数。
    SELECT 1
    GO 1
    FOR j=1 TO 1485
        ery13=二元13
        ssy=ery13+(i-1)*30030
        ys=MOD(ssy,17)
        IF ys=0 OR ys=2  && OR ys=MOD(2,11) OR ys=MOD(4,11)
        else
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE 二元17 WITH ssy
      ENDIF  
      SELECT 1
      SKIP
    ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是制作孪生素数生成元程序由13至17
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-3 20:48 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生成元至17.dbf ALIAS 二生成元17
SELECT 2
USE D:\二生素数中项合成\二生成元至19.dbf ALIAS 二生成元19
kssj=SECONDS()  &&取出开始时间
FOR  i=1 TO 19  &&又遇到以前类似事情,外循环变量用了j与下面的内循环变量一致,所以提示0不能做除数。
    SELECT 1
    GO 1
    FOR j=1 TO 22275
        ery17=二元17
        ssy=ery17+(i-1)*510510
        ys=MOD(ssy,19)
        IF ys=0 OR ys=2  && OR ys=MOD(2,11) OR ys=MOD(4,11)
        else
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE 二元19 WITH ssy
      ENDIF  
      SELECT 1
      SKIP
    ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是制作孪生素数生成元程序由17至19
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-3 21:09 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生成元至19.dbf ALIAS 二生成元19
SELECT 2
USE D:\二生素数中项合成\二生成元至23.dbf ALIAS 二生成元23
kssj=SECONDS()  &&取出开始时间
FOR  i=1 TO 23  &&又遇到以前类似事情,外循环变量用了j与下面的内循环变量一致,所以提示0不能做除数。
    SELECT 1
    GO 1
    FOR j=1 TO 378675
        ery19=二元19
        ssy=ery19+(i-1)*9699690
        ys=MOD(ssy,23)
        IF ys=0 OR ys=2  && OR ys=MOD(2,11) OR ys=MOD(4,11)
        else
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE 二元23 WITH ssy
      ENDIF  
      SELECT 1
      SKIP
    ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是制作孪生素数生成元程序由19至23(范围已到223092870,生成元元素7952175)
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2021-8-5 12:16 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生素数表.DBF ALIAS 二素表
SELECT 2
USE D:\二生素数中项合成\四生素数中项L12.DBF ALIAS 四素中项
kssj=SECONDS()
For i=1 to 1662480
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=二素
  COUNT NEXT 3 FOR 二素-A=12 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 四素12 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,"运行时间提示")
搜寻孪差等于12的孪生素数丛。
回复 支持 反对

使用道具 举报

发表于 2021-8-5 12:27 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生素数表.DBF ALIAS 二素表
SELECT 2
USE D:\二生素数中项合成\四生素数中项L12.DBF ALIAS 四素中项
kssj=SECONDS()
For i=1 to 1662480
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=二素
  COUNT NEXT 5 FOR 二素-A=24 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 四素12 WITH A+12  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

发表于 2021-8-5 12:31 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\四生素数中项L12.DBF ALIAS 四生素数中项
SELECT 2
USE D:\二生素数中项合成\k生素数的数量统计.DBF ALIAS k生统计

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

使用道具 举报

发表于 2021-8-6 20:06 | 显示全部楼层
SELECT 1
USE D:\二生素数中项合成\二生素数表.DBF ALIAS 二素表
SELECT 2
USE D:\二生素数中项合成\四生素数中项L12.DBF ALIAS 四素中项
kssj=SECONDS()
For i=1 to 1662460
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    jl=recno()
    PUBLIC A
    A=二素
  COUNT NEXT 18 FOR 二素-A=102 TO tj
    IF tj=1
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 四素12 WITH A+51  &&将N值付给素数式
    ENDIF
      SELECT 1
      GO jl+1
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
孪生素数中项的差已经计算到了102
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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