24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2523  |  回复: 14
本帖产生 5 个 程序强帖 ,点击这里进行查看

holmescn

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 鼓励讨论! 2011-05-15 19:13:40
引用回帖:
Originally posted by huycwork at 2011-05-14 19:13:45:
对于整数n而言,减少测试的次数对于整个过程来说非常重要,这个有两个方面,一个是减少测试数据,可以通过sqrt来获得O(lgn)的性能,但是对于每个测试数据而言,前面也还有至多lg(lgn)个数据需要测试,优化测试 ...

你这个按倍删除的过程,显然和我这个求模的意思是一样的。在第3题的我使用了你说的这个方法,但这个题为什么没有用呢?

1. 你并不知道第10001个质数有多大。
2. 你需要保存很多的数,然后再把它们删除,这样才能减少运算次数。
3. 如果分块进行,你不能保证下一块里没有3,5,7...的倍数,所以还得查每个数。

不过,也许你的方法是对的。我去试试 啊!
11楼2011-05-14 20:51:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 鼓励讨论! 2011-05-15 19:16:08
引用回帖:
Originally posted by holmescn at 2011-05-14 20:51:38:
你这个按倍删除的过程,显然和我这个求模的意思是一样的。在第3题的我使用了你说的这个方法,但这个题为什么没有用呢?

1. 你并不知道第10001个质数有多大。
2. 你需要保存很多的数,然后再把它们删除,这 ...

呃,我一直都没想明白为啥你们都用求模运算,求模运算涉及除法,除法本身就麻烦。我给出的这个只用指针的加法运算即可。
对于你的3个问题,你试过之后就发现不是啥复杂问题了
1.不需要知道这个质数多大,算法的终止条件就是这个
2.需要保存很多的数,这些数是必须有的,你不保存也一样要临时生成,这些数有两类,一类是素数,素数不是很多,特别是要求10001个,实际只需要保存10000个素数,另外一类是测试数据,这类数据只需要保存N个,看你怎么定义N的了,每增加一个步长,这些数据可以全部丢弃。
3.每个块里面都有需要测试的数,这是必须的,每个测试数据至少要被一个素数测试过,只有素数不被测试,我没说可以优化到一次测试都可以跳过呃~

[ Last edited by huycwork on 2011-5-14 at 21:13 ]
漩涡的中心有一块空地,空空的。
12楼2011-05-14 21:10:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaoqing8569

铁杆木虫 (著名写手)

奥林匹亚光学院院长

★ ★
余泽成(金币+2): 鼓励讨论! 2011-06-08 16:06:33
mathematica
Prime[10001] // Timing

Result:{2.75387*10^-17, 104743}
13楼2011-06-07 22:54:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whiterye

新虫 (初入文坛)


小木虫(金币+0.5):给个红包,谢谢回帖


14楼2011-06-19 23:04:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qinghuoly

木虫 (正式写手)


jjdg(金币+1): 感谢参与 2011-06-20 11:59:38
引用回帖:
Originally posted by holmescn at 2011-05-14 08:42:12:
楼上属于作弊!

给你一个更作弊的解法

J语言

   p.10001
104759

7个字符解决
天地为帐,日月为灯,风雷为号角,云虹为旗令,山川为阵图,草木为兵卒。运阴阳五行为谋,策古今兴替为略。
15楼2011-06-20 08:35:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 libralibra 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见