| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2734 人关注过本帖
标题:简单的筛选二生素数程序
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE  d:\最密三生素数文件\对称8素23.DBF ALIAS 对称8素23
   SELECT 2
   USE  d:\最密三生素数文件\对称8素29.DBF ALIAS 对称8素29
    kssj=SECONDS()                      &&取出开始时间
    For N=1 to 29
    @ 3,6 say N
       SELECT 1
       go 1
       for m=1 to 71280
           && @ 4,8 say 孪素
           X=dc8s23+223092870*(N-1)
           MZ=X%29
                IF  MZ=0 OR MZ=2 OR MZ=6 OR MZ=12 OR MZ=14 OR MZ=20 OR MZ=24 OR MZ=26
                  else
                  SELECT   2      &&打开盛放素数的表
                  APPEND BLANK                &&增加一条空记录
                  REPLACE dc8s29 WITH X     &&将N值付给素
                ENDIF
                SELECT 1
                SKIP
       endfor
    ENDFOR
   =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
制作最密对称8生元(从23升级到29)

素数问题的解决是我学习编程永恒的动力。
7 天前 20:12
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLEAR ALL
SELECT 1
USE d:\最密三生素数文件\素数表.DBF ALIAS 素数表
SELECT 2
USE d:\最密三生素数文件\对称8素29.DBF ALIAS 对称8素
SELECT 3
USE d:\最密三生素数文件\对称8素表.DBF ALIAS 对称8素表
     kssj=SECONDS()                      &&取出开始时间
  For i=1 to 2
         @ 3,6 say i
         SELECT 2
       go 1
       SELECT 2
    for m=1 to 1496880
       k=dc8s29
       N=k+6469693230*(i-1)
        Kf=INT(SQRT(N))       &&求出奇数的开方根
        SELECT  1             &&打开素数表
        LOCATE FOR 素数>=kf      &&根据开方根,查找最大素数
        DO CASE
                CASE EOF()          &&如果超出素数表最后一条记录
                        GO BOTTOM
                CASE 素数>kf     &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
                        SKIP -1
        ENDCASE
        SSS=RECNO()    &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
        GO 11           &&从第一条记录开始读取素数(3)
        FOR j=1 TO SSS-10      &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
                qmz=MOD(N,素数)   &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
                IF qmz=0 OR qmz=2  OR MZ=6 OR MZ=12 OR MZ=14 OR MZ=20 OR MZ=24 OR MZ=26
                        EXIT         
                ENDIF
                SKIP            &&素数表指针向下移动一个
        ENDFOR
        IF j>sss-10
                SELECT  3  &&打开盛放素数的表
                APPEND BLANK                        &&增加一条空记录
                REPLACE dc8s WITH N             &&将N值付给素数
        ENDIF
        SELECT 2
        skip
      ENDFOR
   ENDFOR
        =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用生成元制作最密8生素数

素数问题的解决是我学习编程永恒的动力。
7 天前 20:30
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLEAR ALL
SELECT 1
USE d:\最密三生素数文件\素数表.DBF ALIAS 素数表
SELECT 2
USE d:\最密三生素数文件\对称8素29.DBF ALIAS 对称8素
SELECT 3
USE d:\最密三生素数文件\对称8素表.DBF ALIAS 对称8素表
     kssj=SECONDS()                      &&取出开始时间
  For i=1 to 2
         @ 3,6 say i
         SELECT 2
       go 1
       SELECT 2
    for m=1 to 1496880
     @ 6,12 say m
       k=dc8s29
       N=k+6469693230*(i-1)
        Kf=INT(SQRT(N))       &&求出奇数的开方根
        SELECT  1             &&打开素数表
        LOCATE FOR 素数>=kf      &&根据开方根,查找最大素数
        DO CASE
                CASE EOF()          &&如果超出素数表最后一条记录
                        GO BOTTOM
                CASE 素数>kf     &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
                        SKIP -1
        ENDCASE
        SSS=RECNO()    &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
        GO 11           &&从第一条记录开始读取素数(3)
        FOR j=1 TO SSS-10      &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
                qmz=MOD(N,素数)   &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
                IF qmz=0 OR qmz=2  OR qmz=6 OR qmz=12 OR qmz=14 OR qmz=20 OR qmz=24 OR qmz=26
                        EXIT         
                ENDIF
                SKIP            &&素数表指针向下移动一个
        ENDFOR
        IF j>sss-10
                SELECT  3  &&打开盛放素数的表
                APPEND BLANK                        &&增加一条空记录
                REPLACE dc8s WITH N             &&将N值付给素数
        ENDIF
        SELECT 2
        skip
      ENDFOR
   ENDFOR
        =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
上楼有点瑕疵

素数问题的解决是我学习编程永恒的动力。
7 天前 20:39
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
  USE D:\最密三生素数文件\素数表.dbf ALIAS 素数表
  kssj=SECONDS()  &&取出开始时间
  s=1.000000000000000000
  SELECT 1
    GO 10
    A=素数
    s=s*(A*(A-16)/(A-8)^2)
        SKIP 1
        FOR  j=1 TO 50876228
        SELECT 1
        B=素数
        s=s*(B*(B-16)/(B-8)^2)
        SELECT 1  
        SKIP
        ENDFOR

 ?s
 =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
对称最密8生素数的中项和合成,求其系数(公式中,公共系数)

素数问题的解决是我学习编程永恒的动力。
4 天前 10:03
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE  d:\最密三生素数文件\六生成元11.DBF ALIAS 六生成元11
   SELECT 2
   USE  d:\最密三生素数文件\六生成元13.DBF ALIAS 六生成元13
    kssj=SECONDS()                      &&取出开始时间
    For N=1 to 13
    @ 3,6 say N
       SELECT 1
       go 1
       for m=1 to 5
           && @ 4,8 say 孪素
           X=scy11+2310*(N-1)
           MZ=X%13
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10 OR MZ=12 OR MZ=3
                  else
                  SELECT   2      &&打开盛放素数的表
                  APPEND BLANK                &&增加一条空记录
                  REPLACE scy13 WITH X     &&将N值付给素
                ENDIF
                SELECT 1
                SKIP
       endfor
    ENDFOR
   =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用最密6生素数(0,4,2,4,2,4)的生成元11,制作生成元13(上一个台阶)

素数问题的解决是我学习编程永恒的动力。
4 天前 16:54
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE  d:\最密三生素数文件\六生成元13.DBF ALIAS 六生成元13
   SELECT 2
   USE  d:\最密三生素数文件\六生成元17.DBF ALIAS 六生成元17
    kssj=SECONDS()                      &&取出开始时间
    For N=1 to 17
    @ 3,6 say N
       SELECT 1
       go 1
       for m=1 to 35
           && @ 4,8 say 孪素
           X=scy13+30030*(N-1)
           MZ=X%17
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10 OR MZ=12 OR MZ=16
                  else
                  SELECT   2      &&打开盛放素数的表
                  APPEND BLANK                &&增加一条空记录
                  REPLACE scy17 WITH X     &&将N值付给素
                ENDIF
                SELECT 1
                SKIP
       endfor
    ENDFOR
   =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用最密6生素数(0,4,2,4,2,4)的生成元13,制作生成元17(上一个台阶)

素数问题的解决是我学习编程永恒的动力。
4 天前 17:01
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE  d:\最密三生素数文件\六生成元17.DBF ALIAS 六生成元17
   SELECT 2
   USE  d:\最密三生素数文件\六生成元19.DBF ALIAS 六生成元19
    kssj=SECONDS()                      &&取出开始时间
    For N=1 to 19
    @ 3,6 say N
       SELECT 1
       go 1
       for m=1 to 385
           && @ 4,8 say 孪素
           X=scy17+510510*(N-1)
           MZ=X%19
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10 OR MZ=12 OR MZ=16
                  else
                  SELECT   2      &&打开盛放素数的表
                  APPEND BLANK                &&增加一条空记录
                  REPLACE scy19 WITH X     &&将N值付给素
                ENDIF
                SELECT 1
                SKIP
       endfor
    ENDFOR
   =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用最密6生素数(0,4,2,4,2,4)的生成元17,制作生成元19(上一个台阶)

素数问题的解决是我学习编程永恒的动力。
4 天前 17:06
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE  d:\最密三生素数文件\六生成元19.DBF ALIAS 六生成元19
   SELECT 2
   USE  d:\最密三生素数文件\六生成元23.DBF ALIAS 六生成元23
    kssj=SECONDS()                      &&取出开始时间
    For N=1 to 23
    @ 3,6 say N
       SELECT 1
       go 1
       for m=1 to 5005
           && @ 4,8 say 孪素
           X=scy19+9699690*(N-1)
           MZ=X%23
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10 OR MZ=12 OR MZ=16
                  else
                  SELECT   2      &&打开盛放素数的表
                  APPEND BLANK                &&增加一条空记录
                  REPLACE scy23 WITH X     &&将N值付给素
                ENDIF
                SELECT 1
                SKIP
       endfor
    ENDFOR
   =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用最密6生素数(0,4,2,4,2,4)的生成元19,制作生成元23(上一个台阶)

素数问题的解决是我学习编程永恒的动力。
4 天前 17:11
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE  d:\最密三生素数文件\六生成元23.DBF ALIAS 六生成元23
   SELECT 2
   USE  d:\最密三生素数文件\六生成元29.DBF ALIAS 六生成元29
    kssj=SECONDS()                      &&取出开始时间
    For N=1 to 29
    @ 3,6 say N
       SELECT 1
       go 1
       for m=1 to 85085
           && @ 4,8 say 孪素
           X=scy23+223092870*(N-1)
           MZ=X%29
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10 OR MZ=12 OR MZ=16
                  else
                  SELECT   2      &&打开盛放素数的表
                  APPEND BLANK                &&增加一条空记录
                  REPLACE scy29 WITH X     &&将N值付给素
                ENDIF
                SELECT 1
                SKIP
       endfor
    ENDFOR
   =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用最密6生素数(0,4,2,4,2,4)的生成元23,制作生成元29(上一个台阶),最后生成元29有19569550个元素

素数问题的解决是我学习编程永恒的动力。
4 天前 17:20
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1419
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
  USE d:\最密三生素数文件\素数表.DBF ALIAS 素数表
  SELECT 2
  USE d:\最密三生素数文件\六生成元29.DBF ALIAS 六生成元29
  SELECT 3
  USE d:\最密三生素数文件\对称6素.DBF ALIAS 对称6素表
     kssj=SECONDS()                      &&取出开始时间
  For i=1 to 2
         @ 3,6 say i
         SELECT 2
       go 1
       SELECT 2
    for m=1 to 1956955
     @ 6,12 say m
       k=scy29
       N=k+6469693230*(i-1)
        Kf=INT(SQRT(N))       &&求出奇数的开方根
        SELECT  1             &&打开素数表
        LOCATE FOR 素数>=kf      &&根据开方根,查找最大素数
        DO CASE
                CASE EOF()          &&如果超出素数表最后一条记录
                        GO BOTTOM
                CASE 素数>kf     &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
                        SKIP -1
        ENDCASE
        SSS=RECNO()    &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
        GO 11           &&从第一条记录开始读取素数(3)
        FOR j=1 TO SSS-10      &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
                qmz=MOD(N,素数)   &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
                IF qmz=0 OR qmz=4  OR qmz=6 OR qmz=10 OR qmz=12 OR qmz=16
                        EXIT         
                ENDIF
                SKIP            &&素数表指针向下移动一个
        ENDFOR
        IF j>sss-10
                SELECT  3  &&打开盛放素数的表
                APPEND BLANK                        &&增加一条空记录
                REPLACE dc6s WITH N             &&将N值付给素数
        ENDIF
        SELECT 2
        skip
      ENDFOR
   ENDFOR
        =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
用最密对称6生成元29制作6生素数

素数问题的解决是我学习编程永恒的动力。
4 天前 17:37
快速回复:简单的筛选二生素数程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020741 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved