| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11362 人关注过本帖
标题:优化程序或者从新编写求四生素数中项不能合成的偶数
只看楼主 加入收藏
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 7楼 xuminxz
这个限制是无法避免的。指溢出这个现象。就是用函数mod(n.m)也会溢出,计算错误。不过此问题,不会出现,因为,100亿内的四生素数表已经提供,预计在43.5亿后不在有反例,一个加法运算,在允许范围以内,不会出现溢出现象。那个程序我运行过,只是嫌它运行太慢,才有此举。

素数问题的解决是我学习编程永恒的动力。
2021-10-17 22:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
回复 10楼 独木星空
四生素数中项不能合成的偶数 不知道如何理解

坚守VFP最后的阵地
2021-10-17 22:07
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 8楼 吹水佬
不知此话怎讲?如果说,问题的合理性,那不需要考虑,因为我实际运行过(也证明了它的存在性及合理性)。就是说,那个表存在加法合成元素(即x+y=2N中,x和y的取值),合成结果也已给出:210m+38,210m+188,210m+218(或者用其中项,把表中所有值都减去4,即为中项,此时合成数为210m+30,210m+180,210m+210).
    如果不是命题方面,而是程序上的事情,有就不知道说的是什么了。
必要性何解?充分性又何解?

素数问题的解决是我学习编程永恒的动力。
2021-10-17 22:12
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 12楼 sdta
(11,13,17,19)的中项为15,(101,103,107,109)的中项为105,15+105=120,(191,193,197,199)的中项为195;
15+195=210,15+15=30,105+105=210,195+195=390(1*210+180),105+195=300(1*210+90),以上各楼有误:
在210周期内有5类数可以合成:210m+30,210m+38,210m+90,210m+120,210m+180,210m+210这五类偶数,另外210m+60,210m+150这两类偶数不能被合成,也不考虑它们。只查找那5类偶数中无解的。
即x+y=2N,2N是所列的五类数中的偶数。x,y是四生素数的中项值。

素数问题的解决是我学习编程永恒的动力。
2021-10-17 22:23
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 9楼 吹水佬
如果对于命题而言,充分性与必然性并存,无懈可击。
如果谈程序优化,就不知道了。
吹水佬版主可以试运行,只不过,那个程序太菜,运行速度极慢,估计的一个月才能运行到43.5亿,如果想推翻它,需要在43.5亿后找到反例才可(即无解偶数)。

素数问题的解决是我学习编程永恒的动力。
2021-10-17 22:37
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
希望大家继续参与讨论,其实不需要考虑别的因素,你就知道那个四生素数表中放着x,y可以取值的元素,有小到大排列。程序需要解决任意两个数相加,有那个具体偶数无解即可。偶数是5类偶数中的偶数,其余偶数不需要考虑。

素数问题的解决是我学习编程永恒的动力。
2021-10-18 07:24
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\三角递增法\四生素数表.DBF ALIAS 四素表
SELECT 2
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 102949
      @ 5,12 say i
    SELECT  1     &&打开盛放素数式的表
    && jl=recno()
    PUBLIC A
    A=四素
         SELECT 2
         APPEND BLANK     &&增加一条空记录
         REPLACE 四中 WITH A-4      &&将N值付给素数式
   SELECT 1
   skip
   ENDFOR
    =MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是把四生素数表(用末素代替一组四生素数),改写成用四生素数中项代替一组四生素数程序。

素数问题的解决是我学习编程永恒的动力。
2021-10-18 19:44
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\偶数表.DBF ALIAS 偶数表
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 2949
      @ 5,12 say i
    SELECT  1     
    jl=recno()
    PUBLIC A
    A=四中
          SELECT  1
          GO 1
          For j=1 to 102949
          @ 15,22 say j
          PUBLIC B
          B=四中
          C=A+B
           SELECT 2
           COUNT all  FOR C=偶数 TO tj
              IF tj=0
              SELECT 2
              APPEND BLANK   
              REPLACE 偶数 WITH C
              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,"运行时间提示")
    &&不成功案例,因为查找是否已有太费时间
本想着制作出一个能合成的偶数表,然后排序后,把间断的偶数挖出来即可。
梦想是美好的 ,现实总是残酷的。事与愿违。

素数问题的解决是我学习编程永恒的动力。
2021-10-18 20:18
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
SELECT 1
USE D:\三角递增法\四生素数表中.DBF ALIAS 四中表
SELECT 2
USE D:\三角递增法\偶数表.DBF ALIAS 偶数表
kssj=SECONDS()
 SELECT  1
 GO 1
 For i=1 to 100
      @ 5,12 say i
    SELECT  1     
    jl=recno()
    PUBLIC A
    A=四中
          SELECT  1
          GO 1
          For j=1 to 102949
          @ 15,22 say j
          PUBLIC B
          B=四中
          C=A+B
              SELECT 2
              APPEND BLANK   
              REPLACE 偶数 WITH C   
           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,"运行时间提示")
这是直接制作偶数表。不过得1000来个表,最低也得500个表,然后对每个表去重复的,留下唯一值,那么制作出来的偶数表,如何去重,及排序,挑出唯一值呢?

素数问题的解决是我学习编程永恒的动力。
2021-10-18 20:44
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:966
专家分:683
注 册:2016-6-29
收藏
得分:0 
sort to 偶数表升序 on 偶数
对制作出来的偶数表排序,

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



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

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