主题:关于质数(素数)我有我主张(狂吐血自荐24楼函数)
moz
[专家分:37620] 发布于 2005-07-27 23:00:00
楼顶给人砸了
(网页错误,原楼主贴丢失)
没关系,原函数已经有了新生
我修改了放到第二楼去了.
现在又有了新收获,又有了卖弄的新资本.
如果只是需要判断某数是否质数的话,
看看22楼新程序,看是否能看出点什么来.......
22楼代码是简单了点,又改进优化一下得24楼最新代码.
至于质数表的生成,仍然在尝试加快速度,
现在在计算8位数的时候,每秒速度已经从十万降到五千个了,
看样子是越来越慢,看有没有办法能加快点速度吧.
最后更新于:2007-08-18 15:22:00
回复列表 (共27个回复)
沙发
moz [专家分:37620] 发布于 2005-07-27 14:02:00
我的质数表已经算到7位数去了
一千万个自然数里面大概有六十万个质数,占 6%
对于哥德巴赫猜想我想说几句不说不快的话.
10000000个自然数里面约有600000个质数,
两两相加(组合)的和可以达到600000*600000=360000000000个(有相同有不同的偶数集)
而10000000里面的偶数只有5000000个
360000000000/5000000=70000
概率都已经达到7万倍了,你说这个猜想能不成立吗?
这五百万个偶数里面出现一个360000000000个偶数集里面没有的可能性能有多大?
对于质数表的用法,
我晚些时候重新整理后在楼下发上来.
希望大家在实际应用中用得着.
板凳
moz [专家分:37620] 发布于 2005-07-27 14:03:00
真正最强的程序在这里:
do
input Q&
if Q&=IsZhiShu&(Q&) then print Q&;"是质数"
loop while Q&
[color=FF00FF]FUNCTION IsZhiShu& (a&)[/color]
[color=FF00FF]f% = FREEFILE[/color]
[color=FF00FF]OPEN "质数表" FOR RANDOM AS #f% LEN = LEN(a&)[/color]
[color=FF00FF]IF LOF(f%) = 0 THEN[/color]
[color=FF00FF] z& = 2[/color]
[color=FF00FF] PUT #f%, 1, z&[/color]
[color=FF00FF] z& = 3[/color]
[color=FF00FF] PUT #f%, 2, z&[/color]
[color=FF00FF]END IF[/color]
[color=FF00FF]e& = LOF(f%) \ LEN(a&)[/color]
[color=FF00FF]GET #f%, e&, z&[/color]
[color=FF00FF]SELECT CASE a&[/color]
[color=FF00FF]CASE IS <= 2[/color]
[color=FF00FF] IsZhiShu& = 2[/color]
[color=FF00FF]CASE IS >= z&[/color]
[color=FF00FF] DO UNTIL z& >= a&[/color]
[color=FF00FF] DO[/color]
[color=FF00FF] z& = z& + 2[/color]
[color=FF00FF] q& = SQR(z&)[/color]
[color=FF00FF] i& = 2[/color]
[color=FF00FF] DO[/color]
[color=FF00FF] GET #f%, i&, k&[/color]
[color=FF00FF] IF z& MOD k& = 0 THEN EXIT DO[/color]
[color=FF00FF] i& = i& + 1[/color]
[color=FF00FF] LOOP UNTIL k& > q&[/color]
[color=FF00FF] LOOP UNTIL k& > q&[/color]
[color=FF00FF] e& = e& + 1[/color]
[color=FF00FF] PUT #f%, e&, z&[/color]
'LOCATE 5, 5: PRINT e&, z&
[color=FF00FF] LOOP[/color]
[color=FF00FF] IsZhiShu& = z&[/color]
[color=FF00FF]CASE IS < z&[/color]
[color=FF00FF] l& = 1[/color]
[color=FF00FF] r& = e&[/color]
[color=FF00FF] DO[/color]
[color=FF00FF] m& = (r& + l&) / 2[/color]
[color=FF00FF] GET #f%, m&, b&[/color]
'if a&=b& then
' r&=m&
' exit do
'end if
[color=FF00FF] IF a& > b& THEN l& = m& ELSE r& = m&[/color]
[color=FF00FF] LOOP UNTIL r& - l& < 2[/color]
[color=FF00FF] GET #f%, r&, IsZhiShu&[/color]
[color=FF00FF]END SELECT[/color]
[color=FF00FF]CLOSE #f%[/color]
[color=FF00FF]END FUNCTION[/color]
我出去吃晚饭的一个小时的时间
质数表就已经从一千万的范围算到一千五百万去了
那速度简单吓死我,我的电脑还是被阉割了的赛扬1.7
换成你们的电脑可要更离谱了
经过整理后的这个函数
是求不小于某数的最小质数
得值如果和这个数相等,这个数就是质数
如果不等,返值就为大于这个数的最小质数.
这个函数还可以自动扩充质数表.
当你需要一个百万的质数表的时候,
你只要把百万的数值作为参数,
函数就会为你把质数表扩充到百万的范围去.
我对这个函数非常满意
要能还有精上加精的话,我还得加精.
(够狂妄, 汗汗汗...狂汗..猛汗..汗流不止..汗如泉涌)
下面这个函数是写给54BB的分解质因数的
希望他能看到并且能用得着
其实对于分数计算,分解质因子也是很重要的,也离不开质数表的.
我把分解后的结果做成字符串了,可以根据具体要求作简单更改就可以了
FUNCTION fenjie$ (x&)
if x&=0 then
fenjie$="0"
exit function
elseif x&<0 then
x&=-x&
k$="-1"
end if
f% = FREEFILE
OPEN "质数表" FOR RANDOM AS #f% LEN = LEN(a&)
i& = 1
j& = 2
DO UNTIL x& = 1
IF x& MOD j& = 0 THEN
x& = x& / j&
IF k$ = "" THEN k$ = LTRIM$(STR$(j&)) ELSE k$ = k$ + "*" + LTRIM$(STR$(j&))
ELSE
i& = i& + 1
GET #f%, i&, j&
END IF
LOOP
CLOSE #f%
fenjie$ = k$
END FUNCTION
3 楼
moz [专家分:37620] 发布于 2005-07-27 22:46:00
岂有些理,
没一个人说好,
也总得来几个人批评一下说几句坏话吧?
总不能让我一支公唱独脚戏啊?
4 楼
zqnhlm [专家分:780] 发布于 2005-07-27 23:28:00
顶!!!!!!!!!!
不过因为好多语句都还没有学过啊,所以看不懂!!!
5 楼
zqnhlm [专家分:780] 发布于 2005-07-27 23:28:00
棒!!!!!!!!!
6 楼
zqnhlm [专家分:780] 发布于 2005-07-27 23:28:00
太棒了!!!!!!!
7 楼
zqnhlm [专家分:780] 发布于 2005-07-28 11:03:00
好
好帖
很好帖
确实好帖
少见的好帖
真 tmd 好帖
难得一见的好帖
千年等一回的好帖
好得不能再好的好帖
惊天地且泣鬼神的好帖
让人阅毕击掌三叹的好帖
让人佩服得五体投地的好帖
让人奔走相告曰须阅读的好帖
[color=0000FF]让Moz 看后决定自己加精的好帖[/color]
让人看后在各论坛纷纷转贴的好帖
让人看后连成人网站都没兴趣的好帖
让人看完后就要往上顶往死里顶的好帖
让人不间断地在各种场合重复引用的好帖
让人一见面就问你看过某某好帖没有的好帖
[color=0000FF]让Moz 半夜上厕所都要开电脑再看一遍的好帖[/color]
让个读过后都下载在硬盘里详细研究欣赏的好帖
[color=0000FF]让Moz 走路吃饭睡觉干事连做春梦都梦到它的好帖[/color]
让人翻译成36种不同外语流传国内外世界各地的好帖
让人纷纷唱道过年过节不送礼要送就送某某帖子的好帖
让国家领导人命令将该帖刻在纯金版上当国礼送人的好帖
让网络上纷纷冒出该帖的真人版卡通版搞笑版成人版的好帖
让人在公共厕所里不再乱涂乱化而是纷纷对它引经据典的好帖
[color=0000FF]让某位想成名的少女向媒体说她与该帖作者发生过性关系的好帖[/color]
让人根据它写成小说又被不同导演拍成48个不同版本的电影的好帖
让某名导演跟据此帖改拍的电影在奥斯卡上一连拿了11个奖项的好帖
让人大代表们看完后联名要求根据该帖的内容对宪法做适当修改的好帖
让人为了谁是它的原始作者纷纷地闹上法院打官司要争得它的版权的好帖
让各大学府纷纷邀请该帖作者去就如何发表优秀网络文学为题目演讲的好帖
让人为了该帖而成立了各种学会来研究并为不同的理解争得眼红脖子粗的好帖
让美国警察于今后逮捕人说你有权保持沉默还有权阅读某某帖子要不要啊的好帖
让本拉登躲在山洞里还命令他手下冒着被美军发现的危险去上网下载来阅读的好帖
让萨达姆被捕时被发现他随身携带的除了一把手枪之外还有的就是它的复印件的好帖
让比尔盖茨在懂事会上发给与会者人手一份该帖命令仔细阅读后才讨论其他事宜的好帖
让诺贝儿奖理事会破天荒地因该帖的出现而开会讨论一直决定今后设立最佳帖子奖的好帖
让联合国安理会决定将它译成宇宙语由中国神州六号升空后不断播放看有没有外星人的好帖
让人看完后ie锁死连瑞星诺顿都没法修复只好格式化硬盘重装启动后主页显示的还是它的好帖
8 楼
moz [专家分:37620] 发布于 2005-07-28 14:48:00
我要吐血而亡了
9 楼
zqnhlm [专家分:780] 发布于 2005-07-28 15:11:00
10 楼
staa [专家分:3690] 发布于 2005-08-01 01:50:00
百分之九十九点九九九。。。。(后面还有九万个九)的概率,也不能证明哥德巴赫猜想是正确的。这是数学定理的严谨性。
我来回复