终于有了间茅草棚

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

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

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

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

导航

<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(10)

随笔档案

文章档案

收藏夹

其它的我

友情连接

网页连接

搜索

最新评论

  • 1. re: 陈刚
  • 中间件主要的好处在于便于整合,就像一个接口规范和标准。像游戏开发中3D图形技术有两套,有的游戏直接基于D3D或OenGL开发,现在更多的是基于一些图形引擎,像Ogre,Irrlicht等,在这些图形引擎下面去和具体的图形API打交道,从这个意义上来说Ogre和Irrlicht拥有一定的中间件的涵义(这些图形引擎不只是中间层,还包含有场景管理、渲染逻辑等更多内容)。加了这样一层后,当支持新的D3D10和D3D11时,中间层作出修改,原应用不需要修改就可运行,还有移植到支持OpenGLES的设备时,也是可行的。
  • --清风雨
  • 2. re: linux常见开发问题,.JPEG parameter struct mismatch
  • 你说的3.JPEG parameter struct mismatch没看明白,我现在也遇到了同样的问题,
    ”编译libjpeg的make文件里定位输出生成jpeg的地方“指的是哪啊,
    “打印出相关参数”也不明白
    “前台运行同样的./configure”什么意思?
    帮帮我了,谢谢!我邮箱litao_hao@16.com   qq;40362095
  • --haolitao
  • 3. re: linux移植建议
  • 这个学习了
  • --陈刚
  • 4. re: 软件开发模式猜测
  • 脚本在其可配置性、可扩展性上性能应该是已经超越了中间件技术。

    中间件在对其扩展、更新、配置时不知是否能做到依赖它的程序不中断运行呢
  • --陈刚
  • 5. re: 软件开发模式猜测
  • 对 “中间件模式” 还真不太了解。 

    不知 “中间件模式” 是否会影响运行、调试以及维护成本,以及如何能抽象出中间层?
  • --陈刚
  • 6. re: void *几用
  • class Sample
    {
    public:
        void draw( void *g );
    };

    我个人其实并不太认同这种做法,虽然实现了抽象但会加大维护代价
  • --陈刚
  • 7. re: 用自己的话浅谈封装
  • 封装也是一个不断完善的过程,当然再经过一段时间后随着技术的进步思想的成熟,也会推翻重来。
  • --陈刚
  • 8. re: linux常见开发问题
  • xargs不错,蛮有用的。
  • --hATEmATH的网上田园
  • 9. re: 关于“元编程”的浅思考
  • --免费打工仔
  • 10. re: 关于质数(素数)的算法

  • 是AKS方法。
    http://mathworld.wolfram.com/AKSPrimalityTest.html


  • --perry
  • 11. re: 关于质数(素数)的算法
  • 为了在数字比较小时计算得快些,可以应用一些初等数论的结论:

    1]
    仅计算6n+1和6n+5(n=1,2,3,...)形式的数。易知6n+2和6n+4是2的倍数,6n+3是3的倍数。因为2和3的倍数最多。
    2]
    根据“合数的最大的素因数都不大于它的平方根”定理,每次分解仅算到被分解的平方根为止即可。
    证明(一般的证明都不完整):
    设N=P*Q,P和Q是N的不少于1个素因数的乘积(指出这点很重要)。反证法可证P和Q都小于或等于N的平方根(否则P*Q>N)。等号当且仅当P=Q=N的平方根时成立(这时N是一个素数的平方)。

    1]可减少2/3的计算量,2]可再减少1/2的计算量。即为原计算量的1/6。

    几百位数位的数,建议采用ASK方法。





  • --perry
  • 12. re: 关于质数(素数)的算法

  • 素因数分解是一个NP问题。
  • --perry
  • 13. re: 关于质数(素数)的算法
  • 1121=19*59
  • --李圆欢
  • 14. re: void *几用
  • 方法都不错
  • --员工生日礼物
  • 15. re: void *几用
  • to oshj:
    最近才悟道这个用法,没想到你都用了很多了。

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

阅读排行榜

评论排行榜

关于质数(素数)的算法

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

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

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

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

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

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

评论

# 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 | 李圆欢

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


素因数分解是一个NP问题。
2009-01-21 03:38 | perry

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

为了在数字比较小时计算得快些,可以应用一些初等数论的结论:

1]
仅计算6n+1和6n+5(n=1,2,3,...)形式的数。易知6n+2和6n+4是2的倍数,6n+3是3的倍数。因为2和3的倍数最多。
2]
根据“合数的最大的素因数都不大于它的平方根”定理,每次分解仅算到被分解的平方根为止即可。
证明(一般的证明都不完整):
设N=P*Q,P和Q是N的不少于1个素因数的乘积(指出这点很重要)。反证法可证P和Q都小于或等于N的平方根(否则P*Q>N)。等号当且仅当P=Q=N的平方根时成立(这时N是一个素数的平方)。

1]可减少2/3的计算量,2]可再减少1/2的计算量。即为原计算量的1/6。

几百位数位的数,建议采用ASK方法。





2009-01-21 03:54 | perry

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


是AKS方法。
http://mathworld.wolfram.com/AKSPrimalityTest.html


2009-01-21 05:19 | perry
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]