| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11375 人关注过本帖
标题:优化程序或者从新编写求四生素数中项不能合成的偶数
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 148楼 laowan001
对!就是我想象中的外循环。把第二程序加一套外循环,循环值从2到14即可,每个外循环处理18个表,处理完成后,把最终结果存表,表名称与外循环值相关联。例如外循环值=2时,处理偶数周期表17到表34,外循环值=3时,处理偶数周期表34到表51,....,当外循环值=14,处理偶数周期表231到表238。

素数问题的解决是我学习编程永恒的动力。
2021-11-17 19:43
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1094
专家分:2693
注 册:2015-12-30
收藏
得分:0 
你所说的“上一个表参与”,在哪里体现了?
2021-11-17 20:36
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 152楼 laowan001
第二次外循环的,内层循环是偶数周期表17至表34;第三次外循环,内部循环是偶数周期表34到偶数周期表51;
这里明显可以看出偶数周期表34是第二次外循环的末表,但是却是第三次外循环的初表,这样,外循环中的表,首尾相连,公用一个表,这就是“参与表”。或者干脆认为每个外循环处理18个表(只是,这18个表,上相连,下也相连,只有16个表是独立的,所以,实际上,每次外循环处理的表数为17个)。这不是问题的关键,问题是:例如我们从外循环2开始,这时,需要对偶数周期表17,至34的表,给工作区,及表名(别名不用能行的话,那些表在运行中必须以独占的方式打开,不知道不给别名,是否可以正常运行),在此之前,我是手工给改写的。
     运行完第二个外循环值后,接着运行第三个外循环值,这时用什么语句可以把上次处理的表名,改写成当次的处理表名,及工作区(别名不考虑的情况下,考虑,三项同时改写)。
     也就是把外循环值与内循环处理的18个偶数周期表关联起来(目的改变表名及工作区)。

素数问题的解决是我学习编程永恒的动力。
2021-11-17 22:32
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 130楼 laowan001
在先生的帮助下,已经改成自动改变表名及工作区。
运行完,贴出。
然后可以轻松的再加一套外循坏。

素数问题的解决是我学习编程永恒的动力。
2021-11-17 23:55
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 154楼 独木星空
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"
For j=204 to 221
      @ 5,12 say j
     k=j
      wd=bwjm+ALLTRIM(STR(j))
      USE G:\三角递增法\&wd in 0
      For i=(j-1)*500000+1 to (j+1)*500000

      @ 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 239
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是第13次外循环。

素数问题的解决是我学习编程永恒的动力。
2021-11-18 00:19
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
CLOSE DATA
USE G:\三角递增法\无偶数表总表.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 G:\三角递增法\相同记录数表总13 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数
USE IN   相同记录数表总13
接上楼

素数问题的解决是我学习编程永恒的动力。
2021-11-18 00:30
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE G:\三角递增法\相同记录数表总13.DBF ALIAS 相同记录表13
SELECT 2
USE G:\三角递增法\无偶最终结果表新总13.DBF ALIAS 无偶结果表新13
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 599700
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=相同记录数
    B=无偶
    IF A=2
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 无偶 WITH B     &&将N值付给素数式
    ENDIF
   
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上楼

素数问题的解决是我学习编程永恒的动力。
2021-11-18 00:31
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE G:\三角递增法\无偶最终结果表新总13.DBF ALIAS 无偶总新13
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=4285 to 4641
      @ 3,6 say j
      fw=j*1000000
            SELECT 1
            GO 1
            COUNT ALL FOR 无偶<=fw TO tj
              SELECT  2  
              APPEND BLANK   
              REPLACE 范围 WITH fw
              REPLACE 统计 WITH tj
     ENDFOR
   
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
接上楼,最后一步。

素数问题的解决是我学习编程永恒的动力。
2021-11-18 00:34
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
无偶
4377160800
4388752380
4467906420
这是第13次外循环的最终结果,意思在17个段落中,只有这三个反例(每段跨越2100万个自然数)

素数问题的解决是我学习编程永恒的动力。
2021-11-18 00:38
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
总区段    统计13
205    0
206    0
207    0
208    0
209    2
210    0
211    0
212    0
213    1
214    0
215    0
216    0
217    0
218    0
219    0
220    0
221    0

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



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

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