数学中国

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

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

  [复制链接]
 楼主| 发表于 2010-5-14 09:44 | 显示全部楼层

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

在和你谈论一个问题,你以前不是筛选过 素数吗?那里只有一个预先约定条件,那就是0,能整除的立马结束,执行下一个。这个程序中,只不过是4个约定条件,只要不是这四个其中之一,就要继续,这与筛选素数时,只要不是余数0,就要继续是一个道理。
也就是说,你把我的意思理解反了,我不需要找到那个被判断值有预先给的四个余数之一和它对应的素数,恰恰相反,我要那些没有共同余数的被判断值,这与你要素数是一种想法。
 楼主| 发表于 2010-5-14 10:11 | 显示全部楼层

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

现在以59*59为例(与此主题直接不相关,间接相关,即步骤与方法基本相同),仅次一个自然数,相当于那个程序中的一个确定n值代表的被判断值。
现在我们对它进行素性判断,看一看它是不是素数,对它开方后=59,这样我们需要从素数2到59依次调取,然后对它59*59相对于调入的素数求余数,当然从2到53之前的余数不是0,也就没有被筛除掉,内循环就要一直进行着,当调入最后一个素数59时,出现余数0,内循环结束,它不是素数,不计数,素数表记录不增加,假设它通过了所有根号前素数的检查,没有出现余数0(即没有出现根号前的素数因子),那它就是素数,素数表增加记录,条数相应进行了变化,记录条数增多。
 楼主| 发表于 2010-5-14 10:44 | 显示全部楼层

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

[这个贴子最后由白新岭在 2010/05/14 10:55am 第 1 次编辑]

我把你的程序运行结果复制到Excel上进行了分析,丢掉的5个正好是我们要的数据。
1489
18919
21019
22279
31729
即它们都是四胞胎素数群的代表者,每一个符合条件的被判断值都代表者一组四胞胎素数群,用其中的一个分别减去2,6,8得到三个素数,就是它代表组中其余三个素数。
你仅对初始值19做了,你改变一下初始值,变为109或者199.这样会找到所有四胞胎素数群的代表者素数(是那一组中的最后一个素数,其余3个素数有它减2,6,8得到)。
如果你有时间请运行100亿内的这样的被判断值,分别为:被判断值=19(或109,或199)+0到n*210,k就设为0吧,第一个素数从11开始(前几个就不必要参与了)。
n=47619047.,也就是说每个初始值需要对5千万个数据进行判断。共大概有1.5亿个数据需要判断。素数表到10万就可以了。
另外这里有一个软件问题,虽然一般是15位有效数字的,但是余数函数本身有一定的限制,当数达到某一量级(10亿)外,求出的余数是错误的,一般用mod(x,y)=x-y*int9(x/y)代替比较好,在程序运行中不会出现错误。
发表于 2010-5-14 11:42 | 显示全部楼层

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

白新岭:您好!
1、关于从素数3开始,还是从11或其它什么素数开始,这只有您知道,没有使用依据,怎能乱用?
2、“所谓相应工作”,从程序中可以看出,也就是:记下当时素数、打开信息表、增加一条空记录、保存相应信息(外循环值、被判断值、开方根、素数(就是那个当时素数)、余数)、跳出内循环。
3、如果是剔除符合条件的数(0、2、6、8),只保存不符合条件,这不难,稍做改变即可实现。
4、现在先把这个问题搞清楚后,再搞那个四胞胎。
 楼主| 发表于 2010-5-14 12:01 | 显示全部楼层

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

[这个贴子最后由白新岭在 2010/05/14 00:06pm 第 2 次编辑]
下面引用由vfbpgyfk2010/05/14 11:42am 发表的内容:
白新岭:您好!
1、关于从素数3开始,还是从11或其它什么素数开始,这只有您知道,没有使用依据,怎能乱用?
2、“所谓相应工作”,从程序中可以看出,也就是:记下当时素数、打开信息表、增加一条空记录、保存 ...
我请教的这个编程问题就是解决四胞胎数量问题,自始至终,你就把我的意思理解反了。引用的第三条才是我的本意。
从素数11开始,是因为MOD(19+0至n*210, 2或3或5或7)≠mod(0或2或6或8,2或3或5或7),即不同余,它们参不参加都是一回事,只是让程序多运行。
至于问什么,这样的数就是四胞胎素数群问题,是可以证明的。
 楼主| 发表于 2010-5-14 12:13 | 显示全部楼层

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

你可以用手工计算一下mod(被判断值,素数2)是否与mod(0,2),mod(2,2),MOd(6,2),mOD(8,2)其中之一同余,其余的3个素数3,5,7又是否同余,它们不会同余,因为初始值19,109,199就是用那4个素数筛选出来的。
 楼主| 发表于 2010-5-14 12:14 | 显示全部楼层

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

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

你看点序(n-8,n-6,n-2,n),如果MOD(n,Pj)≠0,2,6,8,你能从点序中的四个自然数中找到素数因子吗?当然Pj要取遍根号n前所有素数都成立时才不会有素数因子(点序中任何一个数),这与同时判断它们四个都是素数是一样的,而这个点序就是一组四胞胎素数群。
到现在知道4个预先约定数的来历吧,知道问什么从素数11开始,而没有必要让2,3,5,7参与的道理。
发表于 2010-5-14 12:37 | 显示全部楼层

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

申一言!它不要编程就可解决!
发表于 2010-5-14 12:58 | 显示全部楼层

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

白新岭:您好!
下面是新的程序和新程序计算的结果。
设:K=0;步长=210;初始值=19;判断素数从11开始;外循环是从0到200。最后结果只剩下5个,这五个实质上可能就是素数(不能被开方根内素数整除,但不一定不能被11以前的素数整除)。
这五个结果如下:(因为不能被根内素数整,则没有素数,也没有余数)
外循环值_被判断值_开方根
_______7_____1489_____38
______90____18919____137
_____100____21019____144
_____106____22279____149
_____151____31729____178
[br][br]-=-=-=-=- 以下内容由 vfbpgyfk 时添加 -=-=-=-=-
经与素数表查对,这五个被判断值就是素数。
发表于 2010-5-14 14:00 | 显示全部楼层

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

vfbpgyfk 已教这么久了,还不明白,真笨!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 20:24 , Processed in 0.079101 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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