| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2058 人关注过本帖
标题:简单的筛选二生素数程序
取消只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\三生素数中项\等差3中升序.DBF ALIAS 等差3中表
 SELECT 2
 USE d:\三生素数中项\等差三中和统计表.DBF ALIAS 等差三中和统计
 kssj=SECONDS()
 SELECT 1
 GO 1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组
 FOR i=1 TO 17194
   @ 9,6 say i
   jl=recno()
   PUBLIC A
   A=dcsz
      SELECT 1
      GO 21097
      FOR j=1  TO 2526
      PUBLIC B
      B=dcsz
      n=A+B
      c=n-INT((n-1)/30)*30
      d=INT((n-1)/30)*9
      IF c<21
      SELECT  2
      GO   INT(c/3)+d
      REPLACE tj2 WITH tj2+2 &&本次运行(a+b)的平方交叉部分
      ELSE
      SELECT  2
      GO 3+INT((c-10)/3)+d
      REPLACE tj2 WITH tj2+2 &&本次运行(a+b)的平方交叉部分
      ENDIF
      SELECT 1
      skip
      ENDFOR
      SELECT 1
      GO jl+1
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
计算a∈(0,1千万),c∈(1千3百万,1千5百万),之前已经计算了a^2,2ab,b∈(1千万,1千3百万)

素数问题的解决是我学习编程永恒的动力。
2025-05-29 23:25
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\素数式系数\四生成元至23.DBF  ALIAS 四生元参照表
SELECT 2
USE D:\素数式系数\素数13万.DBF ALIAS 素数表十三万
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 700245
     ly23=四中23+4
     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()                         &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
        GO 10
                                 &&从第二条记录开始读取素数(3)
        FOR j=1 TO SSS-9
        ys=MOD(bpz,素数)                    &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
        IF ys=0 OR ys=2 OR ys=6 OR ys=8 && 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-9
        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,"运行时间提示")
用生成元及素数表制作最密四生素数

素数问题的解决是我学习编程永恒的动力。
2025-05-31 10:27
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLEAR ALL
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 42
           X=scy11+2310*(N-1)
           MZ=X%13
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10
                  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,"运行时间提示")
制作四生素数(0,4,6,10)的生成元(逐级晋升)

素数问题的解决是我学习编程永恒的动力。
2025-06-02 17:14
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLEAR ALL
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 378
           X=scy13+30030*(N-1)
           MZ=X%17
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10
                  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,"运行时间提示")
制作四生素数(0,4,6,10)的生成元(逐级晋升)

素数问题的解决是我学习编程永恒的动力。
2025-06-02 17:19
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLEAR ALL
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 4914
           X=scy17+510510*(N-1)
           MZ=X%19
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10
                  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,"运行时间提示")
制作四生素数(0,4,6,10)的生成元(逐级晋升)

素数问题的解决是我学习编程永恒的动力。
2025-06-02 17:20
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLEAR ALL
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 73710
           X=scy19+9699690*(N-1)
           MZ=X%23
                IF  MZ=0 OR MZ=4 OR MZ=6 OR MZ=10
                  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,"运行时间提示")
制作四生素数(0,4,6,10)的生成元(逐级晋升)

素数问题的解决是我学习编程永恒的动力。
2025-06-02 17:21
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\最密四生素数文件\四中和值1.DBF ALIAS 四中和
 kssj=SECONDS()
 FOR i=1 TO 100000
   @ 3,6 say i
   jl=recno()
   
      FOR j=1  TO 5
      s=i*210+(INT(j/2)+j)*30
      SELECT 1
      APPEND BLANK     &&增加一条空记录
      REPLACE szhz WITH s
      ENDFOR
      
 ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
给最密四中和值置数

素数问题的解决是我学习编程永恒的动力。
2025-06-12 17:13
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
在VFP中,排序表可以通过使用SORT命令或SELECT语句的ORDER BY子句来实现。
使用SORT命令
打开表:你需要打开你想要排序的表。

使用SORT命令:你可以使用SORT命令对表中的记录进行排序。下面是一个简单的例子,演示如何按照某个字段升序排序:

指定要排序的字段。
指定排序后的新表名称,如果省略,则排序结果将覆盖原表。
指定升序排序,默认即为升序。
指定降序排序。
指定排序时包含的字段列表。
例如,如果你想要按照姓名字段升序排序名为SortedTable的新表,可以使用以下命令:SORT ON 姓名 TO SortedTable。如果你想要按照年龄字段降序排序,可以使用以下命令:SORT ON 年龄 TO SortedTable DESCENDING。如果要对多个字段进行排序,可以这样写:SORT ON 姓名 ASCENDING, 年龄 ASCENDING。这将首先按照姓名字段升序排序,如果姓名相同,则按照年龄字段升序排序。

使用SELECT语句的ORDER BY子句
直接创建战队:CREATE CURSOR 临时表名(字段1 C(3), 字段2 N(5,2))
从SELECT查询语句自动生成:SELECT * RETURNING 表 INTO CURSOR 正式表名 READWRITE
这种方法不会生成新表,VFP关闭后数据库又变回原样,只是建立了一个索引文件。

以上就是在VFP中对表进行排序的几种方法。你可以根据自己的需求选择合适的方法。

素数问题的解决是我学习编程永恒的动力。
2025-06-13 00:21
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表
   SELECT 2
   USE d:\最密四生素数文件\四中统计.DBF ALIAS 四中统计
   
   kssj=SECONDS()
   FOR i=1 TO 34
      @ 3,6 say i
        fw=i*446185740
        SELECT 1
        COUNT ALL FOR ssz<fw TO tj
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 区间 WITH i
         REPLACE 范围 WITH fw
         REPLACE 总量 WITH tj
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
统计最密四生素数中项数量(各分段)

素数问题的解决是我学习编程永恒的动力。
2025-06-14 10:40
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:1312
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1   USE d:\最密四生素数文件\四中升序.DBF ALIAS 四中表   SELECT 2   USE d:\最密四生素数文件\四中和值1.DBF ALIAS 四中和值   kssj=SECONDS()   SELECT 1   GO 1 &&定位在第一个参与运算值上,本次运行交叉部分,外循坏取前段,内循环取后段,一次产生两组     FOR i=1 TO 149      @ 9,6 say i      jl=recno()      PUBLIC A      A=ssz        SELECT 1        GO 1        FOR j=1  TO 14923        PUBLIC B        B=ssz        n=A+B        c=INT(n/210)*5        d=(n-210*INT(n/210))/30      IF d<2      SELECT  2      GO   c+d      REPLACE sztj WITH sztj+1 &&本次运行(a+b)的平方交叉部分      ELSE      SELECT  2      GO c+INT((d+INT(d/2))/2)      REPLACE sztj WITH sztj+1 &&本次运行(a+b)的平方交叉部分.之前丢了+1      ENDIF      SELECT 1      skip      ENDFOR      SELECT 1      GO jl+1 ENDFOR    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")分配四中和值

[此贴子已经被作者于2025-6-14 16:09编辑过]


素数问题的解决是我学习编程永恒的动力。
2025-06-14 11:40
快速回复:简单的筛选二生素数程序
数据加载中...
 
   



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

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