数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: 白新岭

[原创]请教vfbpgyfk先生一个编程问题

  [复制链接]
发表于 2010-5-28 17:40 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

白新岭:您好!
您的四胞胎存在一个有趣情况:
1、四胞胎随着偶数的增大,而成倍地增多。
2、我验证了109、199、829的素数对问题(从100到1700间,1700>829*2),都能构成素数对,而且小素数是依序、一个不多也不少地与这三数构成素数对。也就是说,在这三个数内的所有素数,都能与这三个数构成素数。如:109内有29(包含1和本身,下同)个素数,就有29个素数对;D(199)=75,与199构成的素数对也是75;D(829)=145,与829构成的素数对也是145。
3、从这个结果来看,并不是偶然巧合,而应该是普遍规律。
4、通过验算和四胞胎增长倍率,预计10亿内的四胞应该在2万左右(我现在没有那么多素数)。
 楼主| 发表于 2010-5-28 18:17 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

[这个贴子最后由白新岭在 2010/05/28 06:37pm 第 2 次编辑]
下面引用由vfbpgyfk2010/05/28 05:40pm 发表的内容:
白新岭:您好!
您的四胞胎存在一个有趣情况:
1、四胞胎随着偶数的增大,而成倍地增多。
2、我验证了109、199、829的素数对问题(从100到1700间,1700>829*2),都能构成素数对,而且小素数是依序、一个不多 ...
我不知先生的意思:1,四胞胎素数群的数量的确在无限制的膨胀,直到无穷,但是增速是越来越慢,可以趋近于0,但是永远也不会是0,素数增长的大概规律是,每平方一次,其增长率降低差不多一半,但是无论如何也不会到一半,这个命题,熊一兵先生已经证明,意思是说:如果用2^2^m这个形式表示范围,则素数占有率=2^(-m),举例,m=5时,范围=2^2^5=2^32=4294967296,而占有率不小于2^(-5)=0.03125.也就是说,自然数范围值以指数形式膨胀,而素数占有率以2的负次幂的形式缩小,可见素数减的有多么慢。
四胞胎却以[2^(-m)]^4在缩减其占有率,可以看出,k值越大,其占有率缩减的越快。
2,此中的素数对指什么,偶数吗?总的吗?不理解意思,无法进一步讨论。
4,对于10亿内的四胞胎素数群的数量问题,这个好办,我在头学编程以先就已经有22亿内的实际数据了,是用Excel软件带的函数,经组合设计得出来的,它虽然很费劳力,但计算速度要快于编程,运算速度太慢了,后来我把步长扩大,初始值的数量增多时,估算用时会减下来。还没有实际运行,也没有编程序,因为月底我很忙,无暇顾及。
发表于 2010-5-28 21:20 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

1、看来您还没有理解或没有看明白我的《哥德巴赫猜想彻底地被初等数学证明》中4.5.1到4.5.4论述。现在多数人考虑的是约除因子的增加,而没有考虑数值的扩大。约除因子的增加是数值扩大的开方根,这个约除因子的增长速度,远远低于数值的扩大速度。也就说,数值扩大倍率减去约除因子增长倍率之差,要大于约除因子增长倍率的两位以上,这个很关键。
您说的熊一兵的算法,怕是没有考虑到数值扩大问题和素数增长问题。
2、我说的素数对问题,是这样:构成的四胞胎的那四个素数,基本都能构成素数对,而且是四胞胎其中任意一个素数以内的全部素数构成素数对。如:四胞胎中的109,在109以内有29个素数,这29个素数,都能与109构成素数对。如:1+109,3+109,5+109……109+109,一共29对。其它也是同样。现在只找到437配不上素数对,检查了一下,是因为437不是素数(这个四胞胎是:11,13,17,19;17+2*210=437),可能是我理解上的问题。[br][br]-=-=-=-=- 以下内容由 vfbpgyfk 时添加 -=-=-=-=-
这个结论是通过1700以内连续偶数的所有素数对比对出来的,关键的是,构成的素数对是从小到大地、连续不断地、不落不跳地形成的。
 楼主| 发表于 2010-5-28 22:32 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

很抱歉,我一直没有更深刻的去理解先生的大作,当有了时间一定仔仔细细阅读,去领悟。
发表于 2010-5-29 06:59 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

白新岭:您好!
1、我是一个拿来主义和实用主义者,认为:既然是成熟的东西,就没有必要从头去研究。需要研究的是:这个东西能否被已用,以及怎样用的问题。
2、由于大环境上的原因,本人的真实学历不高,但能博众人之长,补已之短。
3、人家称我是“叫真”的人,因为我不会轻易地信服。
4、第一次发现系偶然,使自己涉足于哥猜,涉足过程是从实践到理论。第二次发现是为了验证或反驳一个观点的产物,是从理论到实践的过程。
5、两次发现,使破解哥猜彻底地完善起来,特别是第二个发现,找到了素数发展态势,发现了被人们忽视的问题。虽然是以初等数学为基础,但是,基础扎实,依据充分,事实清晰。
6、我不否认知识程度的作用力,同时还承认灵活运用知识的必要性。
7、坚信世上只有想不到的事,没有做不到的事。
8、最后要说的一句话可能不妥,仅供参考。那就是,不要以基础理论做定论,捅破窗户纸,不需要很大力气,只需要找对地方,捅在窗户棱子上,是捅不破窗户纸的。
 楼主| 发表于 2010-5-29 18:47 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

最近两天有点忙,先吸收消化消化,当有不明白或无法靠自己短期的学习达到目的时,还得请先生大力帮助,已解燃眉之急。
 楼主| 发表于 2010-5-30 09:50 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

[这个贴子最后由白新岭在 2010/05/30 09:51am 第 1 次编辑]

请先生检查一下,下边的程序是不是对k8生成初始值31表中的生成元31字段的值进行处理(判断是否符合条件,符合的保存,不符合的跳过执行下一个生成元31字段中的值),程序能正常运行,按概率估算应该是2万,3万个被判值中有1个符合要求的不会被筛掉,可是处理了23万,24万的被判值,没有一组符合要求,在最密8生素数群中一条记录也未存上?
CLEAR
SELECT 1
USE f:\MYVFP\学习VFP\最密8生素数群.DBF ALIAS 最密8生素数
SELECT 2
USE f:\MYVFP\学习VFP\新制素数表.DBF ALIAS 新制素数
SELECT 3
USE f:\MYVFP\学习VFP\k8生成初始值31.DBF ALIAS k8生成初始值31
*INPUT "请输入预先值 K= " TO yxk
*INPUT "请输入步长值 bcz= " TO bcz
*INPUT "请输入初始值 csz= " TO csz
*INPUT "请输入外循环起始值 xks= " TO xks
*INPUT "请输入外循环终结值 zds= " TO zds
GO 41001
FOR h=1 TO 200000  &&注意,当复制此程序模版时一定把外循环次数改成工作区2打开表的总记录条数的值
@ 2,5 say h
SELECT k8生成初始值31
bpz=生成元31                &&计算被判断值
Kf=INT(SQRT(bpz))                   &&求出被判断值的开方根
SELECT 新制素数                      &&打开素数表
LOCATE FOR 素数>=kf                 &&根据开方根,查找最大素数
DO CASE
CASE EOF()                          &&如果超出素数表最后一条记录
GO BOTTOM
CASE 素数>kf                        &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
SKIP -1
ENDCASE
SSS=RECNO()                         &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
GO 11                                &&从第二条记录开始读取素数(37)
FOR j=11 TO SSS                      &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素数)                  &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
IF qmz=0 OR qmz=6 OR qmz=8 OR qmz=14 OR qmz=18 OR qmz=20 OR qmz=24 OR qmz=26
EXIT                                &&因为符合条件,则做完相应工作后跳出内循环
ENDIF
SKIP                                &&素数表指针向下移动一个
ENDFOR
IF j>sss
SELECT  最密8生素数  &&打开保存求解结果的信息表
APPEND BLANK                        &&增加一条空记录
REPLACE 外环值 WITH h               &&将外循环数值保存到外循环字段中(外循环数据栏)
REPLACE 被判值 WITH bpz             &&将被判断值保存到被判断值字段中(被判断值数据栏)
REPLACE 开方根 WITH kf              &&将开方根保存到开方根字段中(开方根值数据栏)
SELECT k8生成初始值31
ENDIF
SKIP
ENDFOR
CLEAR ALL
 楼主| 发表于 2010-5-30 16:36 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

望先生在百忙之中抽点时间校对一下那个拼凑的程序。
发表于 2010-5-31 10:55 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

*请先生检查一下,下边的程序是不是对k8生成初始值31表中的生成元31字段的值进行处理(判断是否符合条件,符合的保存,
*不符合的跳过执行下一个生成元31字段中的值),程序能正常运行,按概率估算应该是2万,3万个被判值中有1个符合要求的不会被筛掉,
*可是处理了23万,24万的被判值,没有一组符合要求,在最密8生素数群中一条记录也未存上?
CLEAR
SELECT 1
USE f:\MYVFP\学习VFP\最密8生素数群.DBF ALIAS 最密8生素数
SELECT 2
USE f:\MYVFP\学习VFP\新制素数表.DBF ALIAS 新制素数
SELECT 3
USE f:\MYVFP\学习VFP\k8生成初始值31.DBF ALIAS k8生成初始值31
*INPUT "请输入预先值 K= " TO yxk
*INPUT "请输入步长值 bcz= " TO bcz
*INPUT "请输入初始值 csz= " TO csz
*INPUT "请输入外循环起始值 xks= " TO xks
*INPUT "请输入外循环终结值 zds= " TO zds
GO 41001                            &&***************这条语句是将“k8生成初始值31”表的指针移到“41001”处**************
FOR h=1 TO 200000                   &&注意,当复制此程序模版时一定把外循环次数改成工作区2打开表的总记录条数的值
@ 2,5 say h
SELECT k8生成初始值31
bpz=生成元31                        &&计算被判断值
Kf=INT(SQRT(bpz))                   &&求出被判断值的开方根
SELECT 新制素数                     &&打开素数表
LOCATE FOR 素数>=kf                 &&根据开方根,查找最大素数
DO CASE
CASE EOF()                          &&如果超出素数表最后一条记录
GO BOTTOM
CASE 素数>kf                        &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
SKIP -1
ENDCASE
SSS=RECNO()                         &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
GO 11                               &&从第二条记录开始读取素数(37)
FOR j=11 TO SSS                     &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素数)                   &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
IF qmz=0 OR qmz=6 OR qmz=8 OR qmz=14 OR qmz=18 OR qmz=20 OR qmz=24 OR qmz=26
EXIT
*************根据您的解释(我认为是对的),应该把内循环外的保存语句,放到内循环中(前面的实践已经证明运行良好的程序)
ELSE                                &&因为符合条件,则做完相应工作后跳出内循环
SELECT  最密8生素数                 &&打开保存求解结果的信息表
APPEND BLANK                        &&增加一条空记录
REPLACE 外环值 WITH h               &&将外循环数值保存到外循环字段中(外循环数据栏)
REPLACE 被判值 WITH bpz             &&将被判断值保存到被判断值字段中(被判断值数据栏)
REPLACE 开方根 WITH kf              &&将开方根保存到开方根字段中(开方根值数据栏)
SELECT k8生成初始值31
************结束保存(“*”号区内是移进来的保存信息语句部分)         
ENDIF
SKIP                                &&素数表指针向下移动一个
ENDFOR
SKIP
ENDFOR
CLEAR ALL
*由于我没有“k8生成初始值31”表,所以,不能试运行。您按这个程序运行一下看看,结果如何,再联系。
 楼主| 发表于 2010-5-31 17:10 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

[这个贴子最后由白新岭在 2010/05/31 05:11pm 第 1 次编辑]

CLEAR
SELECT 1
USE E:\用vfp求k生素数数量\最密5生素数群.DBF ALIAS 最密5生素数
SELECT 2
USE E:\用vfp求k生素数数量\素数表2.DBF ALIAS 素数表
SELECT 3
USE E:\用vfp求k生素数数量\k5生成初始值23.DBF ALIAS k5生成初始值23
*INPUT "请输入预先值 K= " TO yxk
*INPUT "请输入步长值 bcz= " TO bcz
*INPUT "请输入初始值 csz= " TO csz
*INPUT "请输入外循环起始值 xks= " TO xks
*INPUT "请输入外循环终结值 zds= " TO zds
GO top                            &&***************这条语句是将“k8生成初始值31”表的指针移到“41001”处**************
FOR h=1 TO 290304                   &&注意,当复制此程序模版时一定把外循环次数改成工作区2打开表的总记录条数的值
@ 2,5 say h
SELECT k5生成初始值23
bpz=生成元23                        &&计算被判断值
Kf=INT(SQRT(bpz))                   &&求出被判断值的开方根
SELECT 素数表                     &&打开素数表
LOCATE FOR 素数>=kf                 &&根据开方根,查找最大素数
DO CASE
CASE EOF()                          &&如果超出素数表最后一条记录
GO BOTTOM
CASE 素数>kf                        &&如果找到的素数比开方根值大,就将记录指针退回一个,保证使用的最大素数在开方根内
SKIP -1
ENDCASE
SSS=RECNO()                         &&记录下最大素数(开方根内)记录位置(如果找到的素数等于开方根,则直接读取这个素数的位置)
GO 11                               &&从第二条记录开始读取素数(37)
FOR j=11 TO SSS                     &&内循环开始。这个循环实质上是从小到大顺序,依次读取素数。循环值是记录序号
qmz=MOD(bpz,素数)                   &&以读取的素数为条件,对被判断值求模 【qmz=MOD(bpz,素数)】文本号括着的原在此行语句体部分.特别需要注意的是在用标点符号时,一定改成英文模式及半角状态。
IF qmz=0 OR qmz=2 OR qmz=6 OR qmz=8 OR qmz=12  
EXIT
*************根据您的解释(我认为是对的),应该把内循环外的保存语句,放到内循环中(前面的实践已经证明运行良好的程序)
ELSE                                &&因为符合条件,则做完相应工作后跳出内循环
SELECT  最密5生素数                 &&打开保存求解结果的信息表
APPEND BLANK                        &&增加一条空记录
REPLACE 外环值 WITH h               &&将外循环数值保存到外循环字段中(外循环数据栏)
REPLACE 被判值 WITH bpz             &&将被判断值保存到被判断值字段中(被判断值数据栏)
REPLACE 开方根 WITH kf              &&将开方根保存到开方根字段中(开方根值数据栏)
SELECT k8生成初始值31
************结束保存(“*”号区内是移进来的保存信息语句部分)         
ENDIF
SKIP                                &&素数表指针向下移动一个
ENDFOR
SKIP
ENDFOR
CLEAR ALL
****还是没有对已存数据表中的记录值进行处理,不知问什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-5-12 17:53 , Processed in 0.110538 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表