C++研究
C++细节深度探索及软件工程
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
37 随笔 :: 0 文章 :: 74 评论 :: 0 Trackbacks
<
2007年4月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
公告
致力于百度无线搜索研发。
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(8)
给我留言
查看公开留言
查看私人留言
随笔分类
(19)
ACM(1)
(rss)
Algorithm(4)
(rss)
Design Patterns & Engeering(4)
(rss)
STL(4)
(rss)
小技巧(6)
(rss)
随笔档案
(37)
2010年3月 (1)
2009年8月 (1)
2009年3月 (1)
2008年10月 (1)
2008年3月 (1)
2008年2月 (2)
2008年1月 (3)
2007年12月 (2)
2007年9月 (4)
2007年7月 (2)
2007年6月 (6)
2007年5月 (2)
2007年4月 (11)
相册
深爱着的母校-天津大学
收藏夹
Goodies
(rss)
好友连接
丑石
(rss)
赵博的Blog连接
学术算法研究
最新随笔
1. [征集]如果百度无线搜索计划产出新产品,你最希望是什么?
2. 百度阿拉丁指亮暗网,何为暗网?
3. 关于http://wap.baidu.com招唤
4. 转入Apache2开发,淡忘windows了
5. VC的Dialog或FormView中的控件不能刷新
6. 关闭Linux下终端或Vi的BEEP声
7. unbuntu Linux下切换GDM与KDM
8. 求有序序列公共部分(集合交集的O(n)复杂度求法)
9. 对包含Struct的Vector就其中的一种属性排序
10. B树ReadKey关键点的操作与实现
搜索
积分与排名
积分 - 69531
排名 - 329
最新评论
1. re: 求有序序列公共部分(集合交集的O(n)复杂度求法)
取交集可不是这么取的吧?一趟循环即可!
--黄智
2. re: Mysql++使用手册及用法规范[未登录]
好东西
--乐乐
3. re: Mysql++使用手册及用法规范
好东西,值得鼓励
--njf
4. re: Mysql++使用手册及用法规范
必然顶楼主!!!!!!!
--扩大客户缴费
5. re: Mysql++使用手册及用法规范
谢了~ 瞅瞅先!
--kongkong
阅读排行榜
1. 有关 C++ 嵌套类 (7790)
2. 关于http://wap.baidu.com招唤(6985)
3. C++ streams (How to use ostream & istream ?)(6863)
4. Mysql++使用手册及用法规范(6539)
5. VC的Dialog或FormView中的控件不能刷新(3082)
6. [资料]STL种容器的基本使用方法(2696)
7. string 类的使用方法(2559)
8. 精炼循环右移(2481)
9. 求有序序列公共部分(集合交集的O(n)复杂度求法)(2148)
10. 对包含Struct的Vector就其中的一种属性排序(2124)
评论排行榜
1. Mysql++使用手册及用法规范(25)
2. Some algorithms about judging a prime .(8)
3. 精炼循环右移(6)
4. Implement "GOF's Builder pattern" Using C++(Series of Gof patterns using C++ 4th article) (4)
5. Implement "GOF's Adapter pattern" Using C++(Series of Gof patterns using C++ 2nd article) (4)
6. [征集]如果百度无线搜索计划产出新产品,你最希望是什么?(4)
7. 有关 C++ 嵌套类 (3)
8. C++ streams (How to use ostream & istream ?)(3)
9. 关于http://wap.baidu.com招唤(3)
10. 百度阿拉丁指亮暗网,何为暗网?(2)
How can you efficeny judge whether the num is primer?
A friend ask me 'How can you efficeny judge whether the num is primer? '
There is a easy way to do it , the follow code isn't written by me but a classic method
E.G quote from
STL tutorial reference
#include
<
iostream
>
#include
<
list
>
#include
<
algorithm
>
#include
<
cstdlib
>
//
for abs()
using
namespace
std;
//
predicate, which returns whether an integer is a prime number
bool
isPrime (
int
number)
{
//
ignore negative sign
number
=
abs(number);
//
0 and 1 are prime numbers
if
(number
==
0
||
number
==
1
)
{
return
true
;
}
//
find divisor that divides without a remainder
int
divisor;
for
(divisor
=
number
/
2
; number
%
divisor
!=
0
;
--
divisor)
{
;
}
//
if no divisor greater than 1 is found, it is a prime number
return
divisor
==
1
;
}
posted on 2007-04-19 02:39
常兴龙
阅读(318)
评论(1)
编辑
收藏
引用
所属分类:
Algorithm
评论
#
re: How can you efficeny judge whether the num is primer?
2008-07-05 16:31
我们一起来提高
我的看法:
(1)0和1都不算素数。
(2)2和3都是素数,可以直接返回。
(3)判断一个比较小的数(可以认为在long范围内的吧,如果是1024二进制位的大数就得想别的办法了)是不是素数肯定得穷举,提高效率就得根据已知的条件缩小穷举的空间。我认为以上程序的穷举空间还不够小。
其实只要对大于3的数num穷举从2~sqrt(num)就够了,而不用扩展到num/2。假如判断1122是不是素数,只需要穷举1122对2~33这个范围的余数有没有为0的就可以,超过33的数,如果正好有另一个积数,那么这个积数一定小于sqrt(num),乘法运算是对称的,这是数实际上已经穷举过了。这样以1122为例就少穷举了528次,效率提高了约17倍,而这个num越大,效率提高就越明显。
不知道我说的对不对,请大家指教啊。
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
求有序序列公共部分(集合交集的O(n)复杂度求法)
精炼循环右移
Some algorithms about judging a prime .
How can you efficeny judge whether the num is primer?
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 常兴龙
>
hi的博客