| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9984 人关注过本帖
标题:优化程序或者从新编写求四生素数中项不能合成的偶数
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE d:\最密三生素数\等差三生素数d6.DBF ALIAS 三中表
SELECT 2
USE d:\最密三生素数\各段三生素数个数d6.DBF ALIAS 三生个数表d6
SELECT 3
USE d:\最密三生素数\偶数表新.DBF ALIAS 偶数表新
SELECT 4
USE d:\最密三生素数\数据源表d6.dbf ALIAS 数据源A
SELECT 5
USE d:\最密三生素数\数据表a.dbf ALIAS 数据A
kssj=SECONDS()
bwjm="偶数周期表d六"
bwjmzj="偶数周期表子集d六"
 For i=2 TO 101
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      && USE IN 3
      && USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
       SELECT 3
     
       DELETE ALL
       PACK
       wdz=bwjmzj+ALLTRIM(STR(i-1)) &&子集表
      
       SELECT 5
       DELETE ALL
       PACK
       INSERT INTO 数据A (数据1) SELECT 偶元+(i-2)*210000 FROM 数据源A
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
           SELECT 1
           GO zgs1-fgs1+1
               FOR k1=1  TO  fgs1
               A=d6三中
               jl1=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 jl2=recno()
                 B=d6三中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 GO jl2+1
                 ENDFOR
               SELECT 1
               GO jl1+1
             ENDFOR   
          ENDFOR
       SELECT 3
       USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
       select * from 偶数表新.dbf DISTINCT INTO table d:\最密三生素数\&wd
       sele * from 数据A where 数据1 not in(sele 偶数 from &wd ) into table d:\最密三生素数\&wdz
       USE IN &wdz
      USE IN &wd
      
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")

素数问题的解决是我学习编程永恒的动力。
2021-11-28 22:57
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
区段    范围    统计    各段个数
1    210000    6300    6300
2    420000    8386    2086
3    630000    9464    1078
4    840000    10091    627
5    1050000    10497    406
6    1260000    10816    319
7    1470000    11008    192
8    1680000    11162    154
9    1890000    11276    114
10    2100000    11384    108
11    2310000    11466    82
12    2520000    11551    85
13    2730000    11611    60
14    2940000    11662    51
15    3150000    11701    39
16    3360000    11744    43
17    3570000    11772    28
18    3780000    11794    22
19    3990000    11813    19
20    4200000    11836    23
21    4410000    11850    14
22    4620000    11859    9
23    4830000    11873    14
24    5040000    11887    14
25    5250000    11895    8
26    5460000    11901    6
27    5670000    11908    7
28    5880000    11916    8
29    6090000    11920    4
30    6300000    11925    5
31    6510000    11930    5
32    6720000    11933    3
33    6930000    11936    3
34    7140000    11937    1
35    7350000    11940    3
36    7560000    11942    2
37    7770000    11944    2
38    7980000    11946    2
39    8190000    11946    0
40    8400000    11947    1
41    8610000    11949    2
42    8820000    11949    0
43    9030000    11949    0
44    9240000    11951    2
45    9450000    11951    0
46    9660000    11953    2
47    9870000    11954    1
48    10080000    11954    0
49    10290000    11955    1
50    10500000    11955    0
51    10710000    11956    1
52    10920000    11956    0
53    11130000    11956    0
54    11340000    11957    1
上楼程序最终结果。

素数问题的解决是我学习编程永恒的动力。
2021-11-28 22:57
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE d:\最密三生素数\数据源表d6.DBF ALIAS 数据源表
kssj=SECONDS()
  For i=(1-1)*63000+1 to (1+1)*63000

      @ 10,22 say i
   n=i
  s=0
  do case
  case MOD(n,9)=1
     s=s+4
  case MOD(n,9)=2
      s=s+6
   case MOD(n,9)=3
      s=s+10
     case MOD(n,9)=4
     s=s+14
  case MOD(n,9)=5
      s=s+16
   case MOD(n,9)=6
      s=s+20
     case MOD(n,9)=7
     s=s+24
  case MOD(n,9)=8
      s=s+26
   case MOD(n,9)=0
      s=s+30
   endcase
     
    wou=INT((n-1)/9)*30+s
   
         SELECT 1
         APPEND BLANK     &&增加一条空记录
         REPLACE 偶元 WITH wou      
      
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
对等差三生素数d30中项和处理第一步

素数问题的解决是我学习编程永恒的动力。
2021-11-29 08:21
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE d:\最密三生素数\等差三生素数d30.DBF ALIAS 三中表
SELECT 2
USE d:\最密三生素数\各段三生素数个数d30.DBF ALIAS 三生个数表d30
SELECT 3
USE d:\最密三生素数\偶数表新.DBF ALIAS 偶数表新
SELECT 4
USE d:\最密三生素数\数据源表d30.dbf ALIAS 数据源A
SELECT 5
USE d:\最密三生素数\数据表a.dbf ALIAS 数据A
kssj=SECONDS()
bwjm="偶数周期表d卅"
bwjmzj="偶数周期表子集d卅"
 For i=2 TO 101
      @ 5,12 say i
      wd=bwjm+ALLTRIM(STR(i-1))
      && USE IN 3
      && USE d:\等差四生素数\偶数表新.DBF ALIAS 偶数表新
       SELECT 3
     
       DELETE ALL
       PACK
       wdz=bwjmzj+ALLTRIM(STR(i-1)) &&子集表
      
       SELECT 5
       DELETE ALL
       PACK
       INSERT INTO 数据A (数据1) SELECT 偶元+(i-2)*210000 FROM 数据源A
       FOR j=1 TO INT(i/2)
        @ 15,22 say j
        SELECT  2     
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  2
        GO i-j
        zgs2=总个数
        fgs2=分个数
           SELECT 1
           GO zgs1-fgs1+1
               FOR k1=1  TO  fgs1
               A=d30中
               jl1=recno()
                 SELECT  1
                 GO zgs2-fgs2+1
                 For k2=1 to fgs2
                 jl2=recno()
                 B=d30中
                 C=A+B
                 SELECT 3
                 APPEND BLANK   
                 REPLACE 偶数 WITH C   
                 SELECT 1
                 GO jl2+1
                 ENDFOR
               SELECT 1
               GO jl1+1
             ENDFOR   
          ENDFOR
       SELECT 3
       USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
       select * from 偶数表新.dbf DISTINCT INTO table d:\最密三生素数\&wd
       sele * from 数据A where 数据1 not in(sele 偶数 from &wd ) into table d:\最密三生素数\&wdz
       USE IN &wdz
      USE IN &wd
      
    ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
上边问题第二步处理,这步是整个问题的核心,运行时间也最长。

素数问题的解决是我学习编程永恒的动力。
2021-11-29 08:22
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLOSE DATA
USE d:\连续整数方程\三生素数三元运算结果表逆.dbf
sele 合成数,sum(方法数) as 方法数 from 三生素数三元运算结果表逆 group by 合成数  into dbf d:\连续整数方程\三生三元运算统计表逆
USE IN 三生三元运算统计表逆
已某一字段作为划分类标准(相同id吧),对另一个字段求和。

素数问题的解决是我学习编程永恒的动力。
2021-12-03 12:12
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 199楼 独木星空
今天用到此楼的数据。

素数问题的解决是我学习编程永恒的动力。
2022-03-25 09:44
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE d:\素数表文件\最密六生素数.DBF ALIAS 六素表
SELECT 2
USE d:\素数表文件\素数表亿新.DBF ALIAS 素数表
SELECT 3
USE d:\素数表文件\偶数表.DBF ALIAS 偶数表

SELECT 4
USE d:\素数表文件\六素分段统计.DBF ALIAS 六素统计
SELECT 5
USE d:\素数表文件\素数分段统计.DBF ALIAS 素数统计
kssj=SECONDS()
bwjm="一素加六中千万"

For i=10 TO 10
        @ 5,12 say i
        wd=bwjm+ALLTRIM(STR(i))
            SELECT 3
            DELETE ALL
            PACK   
             FOR j=1 TO i/2
        @ 15,22 say j
        SELECT  4   
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  5
        GO 10-j+1
        zgs2=总个数
        fgs2=分个数
              
            SELECT 1
             GO zgs1-fgs1+1
                 FOR k1=1  TO  fgs1
                 
                 A=六素
                jl1=recno()
                   SELECT  2
                   GO  zgs2-fgs2+1
                   For k2=1 TO fgs2
                   jl2=recno()
                   B=素数
                  C=A+B
                   SELECT 3
                   APPEND BLANK   
                   REPLACE 偶数 WITH C   
                   SELECT 2
                   GO jl2+1
                   ENDFOR
                 SELECT 1
                 GO jl1+1
               ENDFOR   
         ENDFOR   
         SELECT 3
         USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
        USE d:\素数表文件\偶数表.dbf && 设源表的名称为"表1"
        P=''
        FOR K=1 TO FCOUNT()
        P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
      ENDFOR

        SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF d:\素数表文件\&wd
         
        USE IN &wd
        
      ENDFOR
      =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是一素+最密6生素数的中项在1亿1千万区间段的合成程序。

素数问题的解决是我学习编程永恒的动力。
2022-03-25 10:38
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\素数表文件\最密六生素数.DBF ALIAS 六素表
 SELECT 2
 USE d:\素数表文件\素数表亿新.DBF ALIAS 素数表
SELECT 3
 USE d:\素数表文件\偶数表.DBF ALIAS 偶数表
 
SELECT 4
 USE d:\素数表文件\六素分段统计.DBF ALIAS 六素统计
 SELECT 5
 USE d:\素数表文件\素数分段统计.DBF ALIAS 素数统计
kssj=SECONDS()
 bwjm="一素加六中亿分段"

 For i=1 TO 10
        @ 5,12 say i
        wd=bwjm+ALLTRIM(STR(i))
            SELECT 3
            DELETE ALL
            PACK   
             FOR j=1 TO i
        @ 15,22 say j
        SELECT  4   
        GO j
        zgs1=总个数
        fgs1=分个数
        SELECT  5
        GO i-j+1
        zgs2=总个数
        fgs2=分个数
              
            SELECT 1
             GO zgs1-fgs1+1
                 FOR k1=1  TO  fgs1
                 
                 A=六素
                jl1=recno()
                   SELECT  2
                   GO  zgs2-fgs2+1
                   For k2=1 TO fgs2
                   jl2=recno()
                   B=素数
                  C=A+B
                   SELECT 3
                   APPEND BLANK   
                   REPLACE 偶数 WITH C   
                   SELECT 2
                   GO jl2+1
                   ENDFOR
                 SELECT 1
                 GO jl1+1
               ENDFOR   
         ENDFOR   
         SELECT 3
         USE IN 3&&打开,或关闭,那个工作区(或者,写别名)
      
        USE d:\素数表文件\偶数表.dbf && 设源表的名称为"表1"
        P=''
        FOR K=1 TO FCOUNT()
        P=P+IIF(EMPTY(P),'',',')+FIELDS(K)&& 取得表中所有字段名称,放在P中
      ENDFOR

        SELECT *,COUNT(FIELDS(1)) AS 相同记录数 FROM DBF() GROUP BY &P. INTO DBF d:\素数表文件\&wd
         
        USE IN &wd
        
      ENDFOR
      =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是把1亿分成了10个段落。

素数问题的解决是我学习编程永恒的动力。
2022-03-26 10:29
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
 USE d:\素数表文件\合成数生成元.DBF ALIAS 生成元表
SELECT 2
 USE d:\素数表文件\合成数参照.DBF ALIAS 参照表
kssj=SECONDS()
 For i=1 to 47500
       @ 5,12 say i
     FOR j=1 TO 48
     SELECT 1
     GO j
     s=偶数
     cs=s+(i-1)*210
          SELECT 2
          APPEND BLANK     &&增加一条空记录
         REPLACE 偶数 WITH cs  &&将N值付给素数式
   endfor
      
 ENDFOR
     =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")

素数问题的解决是我学习编程永恒的动力。
2022-03-26 10:54
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:836
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 11
USE d:\素数表文件\无偶数表.DBF ALIAS 无偶表
SELECT 12
USE d:\素数表文件\合成数参照.DBF ALIAS 参照表

SELECT 1
USE d:\素数表文件\一素加六中亿分段1.DBF ALIAS 分段1
SELECT 2
USE d:\素数表文件\一素加六中亿分段2.DBF ALIAS 分段2
SELECT 3
USE d:\素数表文件\一素加六中亿分段3.DBF ALIAS 分段3
SELECT 4
USE d:\素数表文件\一素加六中亿分段4.DBF ALIAS 分段4
SELECT 5
USE d:\素数表文件\一素加六中亿分段5.DBF ALIAS 分段5

SELECT 6
USE d:\素数表文件\一素加六中亿分段6.DBF ALIAS 分段6
SELECT 7
USE d:\素数表文件\一素加六中亿分段7.DBF ALIAS 分段7
SELECT 8
USE d:\素数表文件\一素加六中亿分段8.DBF ALIAS 分段8
SELECT 9
USE d:\素数表文件\一素加六中亿分段9.DBF ALIAS 分段9
SELECT 10
USE d:\素数表文件\一素加六中亿分段10.DBF ALIAS 分段10
kssj=SECONDS()
bwjm="分段"
For j=4 to 10
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

&& SELECT 1  && 未使用的工作区
&& USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      For i=1 to 2
        FOR m=1 TO 2280000
        SELECT 12
        GO m
        ou=偶数
        wou=(j-1)*9975000+(i-1)*9975000+ou
    &&  @ 5,12 say i
    &&   n=i
    &&  s=0
    &&  IF MOD(n,5)=1
    &&  s=s+30
    &&  ENDIF
    &&  IF MOD(n,5)=2
    &&  s=s+90
    &&  ENDIF
    &&  IF MOD(n,5)=3
    &&  s=s+120
    &&  ENDIF
    &&  IF MOD(n,5)=4
    &&  s=s+180
    && ENDIF
    &&  IF MOD(n,5)=0
    &&  s=s+210
    && ENDIF
     
    &&  wou=INT((n-1)/5)*210+s
      SELECT "分段"+ALLTRIM(STR(k))
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT "分段"+ALLTRIM(STR(k))
         skip
         LOOP
         ELSE
         SELECT 11
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         ENDFOR
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
今天,经过改编,用于一素加六中的寻找工作

素数问题的解决是我学习编程永恒的动力。
2022-03-26 20:01
快速回复:优化程序或者从新编写求四生素数中项不能合成的偶数
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032653 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved