摘要: 算法的思想: 对于不超过n的每个非负整数p, 删除2p,3p,4p....., 当处理完所有数之后, 还没被删除的就是素数. 用vis[i]表示已经被删除的数.简单的算法可以表示成:for ( int i = 2; i <= n; i++) { for ( int j = i*2; j <= n; j+=i ) vis[j] = 1;}因为小于n的素数的个数小于等于lgn ( 相关证明可以在初等数论第一章中找到 ), 可以缩短外层循环. int m = sqrt(n + 0.5); for ( int i = 2; i <= m; i++) { if (!v... 阅读全文
posted @ 2012-12-28 12:47 tsubasa_wp 阅读(262) 评论(0) 推荐(0) 编辑