终于有了间茅草棚

——我走时,会否有随风飘散的痕迹?

外面的风好大,雨也淅淅沥沥的。

世间种种的诱惑不惊不扰我清梦,山高路远不绝我追踪你绝美的笑容,登高一呼时才懂始终在为你心痛,俯首对花影摇动都是东风在捉弄

世间种种的迷惑都是因你而猜错,水光月光又交融描述这朗朗的夜空,生死到头的相从似狂花落叶般从容,当一切泯灭如梦就在远山被绝
随笔 - 40, 文章 - 2, 评论 - 257, 引用 - 3

导航

<2005年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

留言簿(11)

随笔档案

文章档案

收藏夹

其它的我

友情连接

网页连接

搜索

最新评论

  • 1. re: 关于质数(素数)的算法
  • 1121=19*59
  • --李圆欢
  • 2. re: void *几用
  • 方法都不错
  • --员工生日礼物
  • 3. re: void *几用
  • to oshj:
    最近才悟道这个用法,没想到你都用了很多了。

    to brent:
    不是为了玩才玩,这里每种用法在特定的情况下,都有他相应的好处。不过,我是做为自己记录的,指不定什么时候就忘记了,还可以这么用。
    1. 可以使得头文件简单,而且出于实现保密的需要,还是很有用处的。
    2. 很多时候对象本身应该简洁,但往往应对不同的需要,通常需要数据对应。举个例子,比如玩家在哪个房间,在哪个房间最好不要直接记在玩家身上,用数据注入的方式,能够很快的获得该信息。
    3. 因为是做为库暴露头文件的,使用者并不关心void *的实际意义,而且能够加快编译速度。真正要关心时,就Graphics.h这个头文件是不够的,通常会需要了解整底层个实现,才能较好的扩充。
  • --清风雨
  • 4. re: void *几用
  • 还在玩C++语言,你这玩法, 又不是用在导弹导航上...
    别人看不懂的代码,都不是好代码,分数为0

    int sub(any) { any; return TRUE;}
    (void)sub(any);

  • --brent
  • 5. re: void *几用
  • 个人用3 的情况比较多
  • --oshj
  • 6. re: 简要记录sizeof和内存对齐
  • 很清楚,受教了
  • --rdeam
  • 7. re: 局部变量
  • 我不用ATL,一般都是用标准c++支持的和平台API。
    crt里的wcs和mbs转换的函数,ms的实现是不完整的,在它的实现代码里有一段说明;而且还要设置local,比较烦琐。
  • --清风雨
  • 8. re: 简单字符串转换
  • win下,atl中有CT2CA, CW2CA等一系列转换类。
    crt中有wcstombs和mbstowcs
  • --局部变量
  • 9. re: 一个奇怪但可能有用的缓存
  • vc资料站:http://www.vcmsdn.com/     对学习很有帮助的,可以上去

    看看,或加群46138350,里面有高手可以请教的。
  • --maggie
  • 10. #progma整理
  • #pragma整理
  • --hi_wyl
  • 11. re: hpho
  • 缓冲在一等程度上是临时性的,而且实际上如果保持std::vector的iterator下次使用,也会有问题。

    所以,这个问题也就是使用时不允许这样用。
  • --清风雨
  • 12. re: 一个奇怪但可能有用的缓存
  • 如果有指针引用着arrange()所调整的那块内存,那就乱了.
  • --hpho
  • 13. re: 一个奇怪但可能有用的缓存
  • 用std::string不就行了?
  • --金庆
  • 14. re: ZiDing
  • 鉴于你的建议,前段时间我看了下boost的内存对象池,没有过于深入,
    判断下来属于做法类似,性能应该相当,甚至可能我这个略好一点。

    因为编写测试是一件相当麻烦,而且要求也很高的事,而要全面又很难。

    boost的代码我看起来比较难读,维护、调试起来对我来说是一个大麻烦。所以,我一般不选择boost。
  • --清风雨
  • 15. re: 简单内存对象池
  • 和boost的对比过没有?
  • --ZiDing

阅读排行榜

评论排行榜

关于质数(素数)的算法

     很久没有记录什么了,但是最近又没有什么值得记录的,想copy过来的又介于非技术,想写又不好写的也不便写在这里。

     前次遇到一个素数的问题,一直也想问问大家有没什么好的想法:计算从2到100000素数的个数,当然记录所有素数更好。希望用尽量少的内存和尽可能快的方法。

     1.定义
     根据素数定义,从2到100000遍历所有数字,每个数字根据定义判断是否素数。

     2.筛选
     先筛选掉所有的2的倍数(2倍),然后对剩余的数筛选3的倍数(2倍),从左至右依次遍历筛选。

     3.猜测(由于自己找不到证明,所以只能算猜测)
     素数是不能被素数整除的,虽然并不是不能被素数整除的数就是素数,但是,我们列举一些数就会发现,每个素数是不能被他之前的素数整除的,只需判断该数不能被他之前的素数整除即可。
     另外,任何一个数必定有比他的平方根小的因子,所以,可以只用判断到平方根以前的素数就够了(不过,因为求平方根比较毫时,这里实际也不必采用;同样,用前面的素数的平方比较也是不必的,乘法代价较这种遍历量小的情况实际更昂贵)。

posted on 2005-11-07 23:00 终于有了间茅草棚 阅读(4957) 评论(16)  编辑 收藏

评论

# re: 关于质数(素数)的算法

    2、3是素数,排除2、3的倍数,是肯定了“素数是不能被他之前的素数整除的”,所以2筛选与3猜测意义相同。
    假定了我们已经知道2、3为素数,所以可以假定我们知道更多的素数(7、11、13...)等,排除他们的倍数节省开平方消耗。
    讨论一下。
2005-11-08 02:38 | MemoryTime

# re: 关于质数(素数)的算法

素数是除了1和它自己……,当然不能被其他素数……了。
2005-11-08 09:15 | 周星星

# re: 关于质数(素数)的算法

这里已经提供了完整实现,请仔细看源代码。
http://blog.vckbase.com/panic/archive/2005/09/22/12268.html
2005-11-08 10:40 | pAnic

# re: pAnic

你给的计算素数的方法,正是猜测里说的。
但,不知道能不能证明这个猜测。
2005-11-08 16:11 | 清风雨

# re: MemoryTime 和 周星星

这个是必要命题,但不是充分命题。—— 至于这个被猜测的充分命题是否正确,现在也不能肯定(个人不能证明)。

MemoryTime的意思不太明白,猜测就是用的前面这个“所谓的”充分命题,然后对每个数只需要检测他前面的素数即可,你的意思是将猜测和筛选结合?
2005-11-08 16:12 | 清风雨

# re: 关于质数(素数)的算法

晕倒!这是几千年前就证明过的爱撒托散筛法啊~
这里有算法说明和实现:
http://blog.vckbase.com/smileonce/archive/2004/11/09/1394.html
2005-11-09 08:16 | 一笑

# re: 一笑

啊! 我早知道就好了。 自己还想了好久,但是不知道怎么证明。
2005-11-09 21:33 | 清风雨

# re: 一笑

1.你的"爱沙托散筛法",似乎就是定义筛选法。不知是我没看明白还是?
2.不知道“猜测”是正确的还是错误的。正确的,希望能看到证明;错误的,希望能给出反例。
3.你和pAnic的都给出类素数判断的好方法,不知道还有没谁有好方法,希望能得一见。
2005-11-09 21:59 | 清风雨

# re: 关于质数(素数)的算法

这种方法还要证明么?不就是素数定义么?
2005-11-10 14:13 | 馨荣家园

# re: 关于质数(素数)的算法

这种筛选法只适合小素数,而目前更重要得是获得大素数,例如宽度超过180位得素数。我得博客种有素数的计算算法,你可以去看看
2005-11-10 16:16 | 馨荣家园

# re: 关于质数(素数)的算法

素数的定义是:只能被本身和1整除的数。
猜测认为:任何一个不能被他前面的所有素数整除的数必定是素数。
比如7,他前面是5、3、2,所以7是素数;但是9能被他前面的3整数,所以不是;11又是,13是,15不是,17是,19是,......
2005-11-10 22:19 | 清风雨

# re: 关于质数(素数)的算法

清风雨的意思是不是:如果一个数不能被所有比他小的素数整除,你还需要猜测才能确定他是素数?

这个结论很显然啊?假设数a不是素数,那么肯定存在一个数b整除他

根据假设,所有小于他的素数都不能整除他,那么b一定是合数

1. 证明,合数的大于1的最小正因子肯定是素数
定义数b的正因子集合为B,则B-{1,b}肯定非空,否则b是一个质数

定义B' = B-{1,b}

假设r是B'中最小的元素,根据前面的结论,r肯定是存在的

假设r不是质数,那么r一定有个正因子r',且1 < r' < r
但是r'必然也整除b,这和r是b是B'最小正元素的假设矛盾

结论是:r肯定是质数

2. 合数肯定有质数因子
有了结论1,这个结论显然

3. 回到原来问题,a能被一个合数b整除,但是不能被所有小于他的素数整除,这是不可能的,因为合数b的素数因子必然能整除a

所以两个定义是等价的,根本不用猜测
2005-11-11 19:04 | arong

# re: 关于质数(素数)的算法

对。合数必然有质因数,所以,证明了。
谢谢!
2005-11-12 21:04 | 清风雨

# re: 关于质数(素数)的算法

1121是不是质数
2006-07-25 19:09 | 连海明

# re: 关于质数(素数)的算法

1121是不是质数
2006-07-25 19:09 | 连海明

# re: 关于质数(素数)的算法

1121=19*59
2008-09-02 17:08 | 李圆欢
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]