来看这一种判断素数(质数)的函数:

form math import sart

def is_prime(n):
if n==1:
return False
for i in range(2, int(sqrt(n) + 1)):
if n % i == 0:
return False
return True

看起来,这是一种比较优秀的方法了,因为通过sqrt()函数减少了开方级的计算量。

再来看:

def is_prime(number):
if number > 1:
if number == 2:
return True
if number % 2 == 0:
return False
for current in range(3, int(math.sqrt(number) + 1), 2):
if number % current == 0:
return False
return True
return False

咋一看,这一次的代码看起来更多。但是,计算量却又在原来的基础上又几乎减少一半。高明之处就在这一句:if number % 2 == 0:,其实这一句就一部将2以及所有合数因子给排除掉了,所以在这一句range(3, int(math.sqrt(number) + 1), 2)中,直接从3起步,步长为2.在range()函数产生的序列是[3,5,7,9,...],比原来由range(2, int(sqrt(n) + 1))产生的[2,3,4,5,6,...]少了合数的部分。

最新文章

  1. ubuntu 14.04 以root权限启动chrome
  2. Headroom.js – 快速响应用户的页面滚动操作
  3. 欧几里得&扩展欧几里得
  4. 剑指Offer:面试题23——从上往下打印二叉树(java实现)
  5. .NET 中的委托
  6. servlet 项目
  7. IOS开发-- NScoding 序列化
  8. spring项目中如何添加定时器以及在定时器中自动生成sprng注入对象
  9. ModSecurity CRS笔记[转]
  10. 代码格式化工具Astyle配置
  11. Linux替换命令
  12. [转载] Java中常用的加密方法
  13. java:条件表达式
  14. Mysql中的常用函数:
  15. 程序员面试宝典3TH-ch7.2
  16. JavaScript中的this所引用的对象和如何改变这个引用
  17. PTA --- 时间复杂度 选择题
  18. [转]Node.js中koa使用redis数据库
  19. 学习 Spring (二) Spring 注入
  20. 教你一招:修复win7 系统自带的截图工具损坏

热门文章

  1. i.MX RT600之DSP调试环境搭建篇
  2. php 基础知识 常见面试题
  3. jquery-ajax的用法
  4. Mac旧机「焕」新机过程记录
  5. 投资人分享答疑----HHR计划----以太直播课第三课
  6. LoadRunner的参数化
  7. nginx防盗链处理模块referer和secure_link模块
  8. 开启Linux服务器vnc远程服务详细步骤
  9. kafka 高吞吐量的因素
  10. Java中正确使用hashCode和equals方法