python判断数字是否是超级素数幂


Posted in Python onSeptember 27, 2018

如果一个数字能表示成 p^q,且p是一个素数,q为大于1的正整数,则此数字就是超级素数幂。
param number: 测试该数字是否是超级素数幂
return: 如果不是就返回 False,如果是就返回 p 和 q 值
例如,输入125,返回(5,3)

代码:

import math


def get_prime(number):
  '''
  寻找小于number的所有的质数,时间复杂度o(n^2)
  '''
  if number <= 1:
    print 'Wrong given number.'
    return
  prime = []
  for i in xrange(2, number+1):
    j = 2
    while j < i:
      if i % j == 0:
        break
      j += 1
    if j == i:
      prime.append(i)
  return prime

def super_prime_power(number):
  scope = int(math.ceil(math.sqrt(number))) # 开根号除掉一部分不需要的数
  prime_number = get_prime(scope)
  be_tested = []
  for i in prime_number: # 先将无法被整数的排除掉
    if number % i == 0:
      be_tested.append(i)
  for p in be_tested:
    q = 2
    while p ** q <= number:
      if p ** q == number:
        return (p, q)
      q += 1
  return False

print super_prime_power(999)

分析:

总的时间复杂度为o(sqrt(n)log n),再加上寻找质数花费的时间,总的时间复杂度为o(n^2 sqrt(n)log n)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Fiddler如何抓取手机APP数据包
Jan 22 Python
python Pygame的具体使用讲解
Nov 03 Python
Python反射的用法实例分析
Feb 11 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
python添加菜单图文讲解
Jun 04 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
利用python实现冒泡排序算法实例代码
Dec 01 Python
Django设置Postgresql的操作
May 14 Python
解决Windows下python和pip命令无法使用的问题
Aug 31 Python
python搜索算法原理及实例讲解
Nov 18 Python
浅谈Python中的正则表达式
Jun 28 Python
Flask实现跨域请求的处理方法
Sep 27 #Python
python环形单链表的约瑟夫问题详解
Sep 27 #Python
transform python环境快速配置方法
Sep 27 #Python
python如何求解两数的最大公约数
Sep 27 #Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 #Python
python斐波那契数列的计算方法
Sep 27 #Python
python实现汉诺塔算法
Mar 01 #Python
You might like
解析php入库和出库
2013/06/25 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
javascript前端实现多视频上传
2020/12/13 Javascript
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
Python匹配中文的正则表达式
2016/05/11 Python
Python对象与引用的介绍
2019/01/24 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
英语系本科生求职信范文
2013/12/18 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
弄虚作假心得体会
2014/09/10 职场文书
干部个人考察材料
2014/12/24 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技