| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10799 人关注过本帖
标题:优化程序或者从新编写求四生素数中项不能合成的偶数
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
kssj=SECONDS()
bwjm="偶数周期表"
For j=1 to 10
      @ 5,12 say j
      n=j+1
      wd=bwjm+ALLTRIM(STR(j))
&& CLOSE DATABASES
&& SET COMPATIBLE ON
&& OPEN DATABASE (HOME(2) + 'data\testdata')

SELECT 0  && 未使用的工作区
USE  G:\三角递增法\&WD ALIAS n && 打开 Customer 表
      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 n
      
      
         && select G:\三角递增法\&WD..DBF IN 0
       A=偶数
         IF A=wou
         SELECT n
         skip
         LOOP
         ELSE
         SELECT 1
         APPEND BLANK
         REPLACE 无偶 WITH wou
         ENDIF
         
   
     ENDFOR
ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
只运行一次,进入第二次外循环,提示别名已被占用

素数问题的解决是我学习编程永恒的动力。
2021-10-28 10:16
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 1
USE G:\三角递增法\偶数周期表1.DBF ALIAS 偶周期1
SELECT 2
USE G:\三角递增法\偶数周期表2.DBF ALIAS 偶周期2
SELECT 3
USE G:\三角递增法\偶数周期表3.DBF ALIAS 偶周期3
SELECT 4
USE G:\三角递增法\偶数周期表4.DBF ALIAS 偶周期4
SELECT 5
USE G:\三角递增法\偶数周期表5.DBF ALIAS 偶周期5
SELECT 6
USE G:\三角递增法\偶数周期表6.DBF ALIAS 偶周期6
SELECT 7
USE G:\三角递增法\偶数周期表7.DBF ALIAS 偶周期7
SELECT 8
USE G:\三角递增法\偶数周期表8.DBF ALIAS 偶周期8
SELECT 9
USE G:\三角递增法\偶数周期表9.DBF ALIAS 偶周期9
SELECT 10
USE G:\三角递增法\偶数周期表10.DBF ALIAS 偶周期10
SELECT 11
USE G:\三角递增法\偶数周期表11.DBF ALIAS 偶周期11
SELECT 12
USE G:\三角递增法\偶数周期表12.DBF ALIAS 偶周期12
SELECT 13
USE G:\三角递增法\偶数周期表13.DBF ALIAS 偶周期13
SELECT 14
USE G:\三角递增法\偶数周期表14.DBF ALIAS 偶周期14
SELECT 15
USE G:\三角递增法\偶数周期表15.DBF ALIAS 偶周期15
SELECT 16
USE G:\三角递增法\偶数周期表16.DBF ALIAS 偶周期16
SELECT 17
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期17
kssj=SECONDS()
bwjm="偶周期"
For j=1 to 17
      @ 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=(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,"运行时间提示")
运算到:偶数整周期表11时出错,因为此表的数据是n*m的形式,非一个正整数值。

素数问题的解决是我学习编程永恒的动力。
2021-10-28 14:54
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
LECT 239
USE G:\三角递增法\无偶数表总表.DBF ALIAS 无偶数总表
SELECT 18
USE G:\三角递增法\偶数周期表1.DBF ALIAS 偶周期18
SELECT 19
USE G:\三角递增法\偶数周期表2.DBF ALIAS 偶周期19
SELECT 20
USE G:\三角递增法\偶数周期表3.DBF ALIAS 偶周期20
SELECT 21
USE G:\三角递增法\偶数周期表4.DBF ALIAS 偶周期21
SELECT 22
USE G:\三角递增法\偶数周期表5.DBF ALIAS 偶周期22
SELECT 23
USE G:\三角递增法\偶数周期表6.DBF ALIAS 偶周期23
SELECT 24
USE G:\三角递增法\偶数周期表7.DBF ALIAS 偶周期24
SELECT 25
USE G:\三角递增法\偶数周期表8.DBF ALIAS 偶周期25
SELECT 26
USE G:\三角递增法\偶数周期表9.DBF ALIAS 偶周期26
SELECT 27
USE G:\三角递增法\偶数周期表10.DBF ALIAS 偶周期27
SELECT 28
USE G:\三角递增法\偶数周期表11.DBF ALIAS 偶周期28
SELECT 29
USE G:\三角递增法\偶数周期表12.DBF ALIAS 偶周期29
SELECT 30
USE G:\三角递增法\偶数周期表13.DBF ALIAS 偶周期30
SELECT 31
USE G:\三角递增法\偶数周期表14.DBF ALIAS 偶周期31
SELECT 32
USE G:\三角递增法\偶数周期表15.DBF ALIAS 偶周期32
SELECT 33
USE G:\三角递增法\偶数周期表16.DBF ALIAS 偶周期33
SELECT 34
USE G:\三角递增法\偶数周期表17.DBF ALIAS 偶周期34
kssj=SECONDS()
bwjm="偶周期"
For j=18 to 34
      @ 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=(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,"运行时间提示")
上楼用时10分13.20秒;本楼用时12分30.78秒。
唯一的缺陷,就是每次需要把工作区用手工改一遍,不知道是否可以根据外循环值,来对工作区付值否?
select 239是人为之。

素数问题的解决是我学习编程永恒的动力。
2021-10-28 19:41
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 93楼 独木星空
手工改写的弊端,工作区改了,表别名改了,外循环值改了,最重要的表文件名没有改,改的是什么?

素数问题的解决是我学习编程永恒的动力。
2021-10-28 20:40
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分: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 相同记录数 && 取得各记录的相同记录数及其各字段值
SELECT * FROM DBF() WHERE 相同记录数>1 && 该查询结果详细列举了表1中各重复记录的 重复数

素数问题的解决是我学习编程永恒的动力。
2021-10-29 06:52
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE G:\三角递增法\无偶相同记录数.DBF ALIAS 无偶相同录
SELECT 2
USE G:\三角递增法\无偶最终结果表.DBF ALIAS 无偶结果表
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 2385727
      @ 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-10-29 06:53
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
昨天晚上,运算了205至221之间的17个区间段,得到了4个反例。

素数问题的解决是我学习编程永恒的动力。
2021-10-30 09:41
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE G:\三角递增法\相同记录数表总1.DBF ALIAS 相同记录表1
SELECT 2
USE G:\三角递增法\无偶最终结果表新总1.DBF ALIAS 无偶结果表新1
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 4387838
      @ 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-10-31 05:36
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE G:\三角递增法\无偶最终结果表新总1.DBF ALIAS 无偶总新1
SELECT 2
USE G:\三角递增法\无偶数统计表.DBF ALIAS 无偶统计
kssj=SECONDS()
SELECT 1
     For j=1 to 378
      @ 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-10-31 05:38
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1712
专家分:3318
注 册:2012-2-29
收藏
得分:0 
@独木星空,学习啦,谢谢!
2021-10-31 07:16
快速回复:优化程序或者从新编写求四生素数中项不能合成的偶数
数据加载中...
 
   



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

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