数学中国

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

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

  [复制链接]
 楼主| 发表于 2025-4-18 17:36 | 显示全部楼层
截止2025年04月17日周四22:02分浏览量639579, 回复3548,热度272
截止2025年04月18日周五17:36分浏览量640801, 回复3550,热度272
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-18 22:04 | 显示全部楼层
SELECT 1
USE D:\素数式系数\素数式307.DBF ALIAS 素数式
SELECT 2
USE D:\素数式系数\最密k生素数间距新.DBF ALIAS 间距
kssj=SECONDS()
FOR h=91 TO 100
    @ 5,12 say h
    k=h+1
    SELECT  1
    GO 1
    E=1000
      For i=1 to 974480
     
      SELECT  1     &&打开盛放素数式的表
      jl=recno()
   
      PUBLIC A
      A=sss307
      SKIP h
      PUBLIC B
      B=sss307
      cj1=B-A  &&求前后两个素数的差值
      IF E>cj1
      E=cj1
      ELSE E<=cj1
   
      E=E
         
      ENDIF
      SELECT 1
      GO jl+1
      ENDFOR
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE ksssx WITH k &&将k值付给ksss
      REPLACE jjx WITH E
      
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-18 22:25 | 显示全部楼层
截止2025年04月17日周四22:02分浏览量639579, 回复3548,热度272
截止2025年04月18日周五22:25分浏览量642162, 回复3552,热度272
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-19 08:52 | 显示全部楼层
截止2025年04月17日周四22:02分浏览量639579, 回复3548,热度272
截止2025年04月18日周六08:51分浏览量642772, 回复3553,热度272
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-19 22:05 | 显示全部楼层
截止2025年04月17日周四22:02分浏览量639579, 回复3548,热度272
截止2025年04月18日周六22:05分浏览量644373, 回复3554,热度272
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-20 08:47 | 显示全部楼层
截止2025年04月18日周六22:05分浏览量644373, 回复3554,热度272
截止2025年04月19日周日08:47分浏览量645384, 回复3555,热度272
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-20 09:01 | 显示全部楼层
SELECT 1
USE D:\素数式系数\素数式23.DBF  ALIAS 素数式23
SELECT 2
USE D:\素数式系数\素数表万.DBF ALIAS 素数表
SELECT 3
USE D:\素数式系数\素数式47.DBF ALIAS 素数式47
kssj=SECONDS()                      &&取出开始时间
    FOR i=1 TO 1
   
     SELECT 1
     GO 1
     FOR k=1 TO 1635877
      @22,20 SAY k
     ly23=sss23
     && bpz=ly23+(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()                         &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
        SELECT 2
        GO 10  
                                 &&从第二条记录开始读取素数(3)
        FOR j=1 TO 6
        ys=MOD(ly23,素数)                    &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
        IF ys=0 && OR ys=4 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>5
        SELECT 3              &&打开保存求解结果的信息表
        APPEND BLANK                        &&增加一条空记录
        REPLACE sss47 WITH ly23            &&将被判断值保存到被判断值字段中(被判断值数据栏)
        ENDIF
        SELECT 1
        SKIP
        ENDFOR
ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
之前筛选到307过度了,这次筛选到47为止。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-20 10:37 | 显示全部楼层
SELECT 1
USE D:\素数式系数\素数式47.DBF ALIAS 素数式
SELECT 2
USE D:\素数式系数\最密k生素数间距短.DBF ALIAS 间距
kssj=SECONDS()
FOR h=1 TO 50
    @ 5,12 say h
    k=h+1
    SELECT  1
    GO 1
    E=1000
      For i=1 to 1417020
     
      SELECT  1     &&打开盛放素数式的表
      jl=recno()
   
      PUBLIC A
      A=sss47
      SKIP h
      PUBLIC B
      B=sss47
      cj1=B-A  &&求前后两个素数的差值
      IF E>cj1
      E=cj1
      ELSE E<=cj1
   
      E=E
         
      ENDIF
      SELECT 1
      GO jl+1
      ENDFOR
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE ksssd WITH k &&将k值付给ksss
      REPLACE jjd WITH E
      
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-20 20:11 | 显示全部楼层
SELECT 1
USE D:\素数式系数\素数式23.DBF ALIAS 素数式
SELECT 2
USE D:\素数式系数\最密k生素数间距23.DBF ALIAS 间距
kssj=SECONDS()
FOR h=24 TO 25
    @ 5,12 say h
    k=h+1
    SELECT  1
    GO 1
    E=1000
      For i=1 to 36495250
     
      SELECT  1     &&打开盛放素数式的表
      jl=recno()
   
      PUBLIC A
      A=sss23
      SKIP h
      PUBLIC B
      B=sss23
      cj1=B-A  &&求前后两个素数的差值
      IF E>cj1
      E=cj1
      ELSE E<=cj1
   
      E=E
         
      ENDIF
      SELECT 1
      GO jl+1
      ENDFOR
      SELECT 2
      APPEND BLANK     &&增加一条空记录
      REPLACE ksss23  WITH k &&将k值付给ksss
      REPLACE jj23  WITH E
      
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-21 01:46 | 显示全部楼层
截止2025年04月20日周日08:47分浏览量645384, 回复3555,热度272
截止2025年04月21日周一01:45分浏览量646766, 回复3559,热度272
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-9 18:34 , Processed in 0.085336 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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