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 相关文章推荐
用Python写的图片蜘蛛人代码
Aug 27 Python
用Python编写一个简单的FUSE文件系统的教程
Apr 02 Python
python中self原理实例分析
Apr 30 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
Python端口扫描简单程序
Nov 10 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
python学生管理系统开发
Jan 30 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
Python中turtle库的使用实例
Sep 09 Python
python游戏开发的五个案例分享
Mar 09 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
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
python pdb调试方法分享
2014/01/21 Python
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
python基础教程之常用运算符
2014/08/29 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python新手学习函数默认参数设置
2020/06/03 Python
python中的测试框架
2020/11/13 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
使用索引有什么好处
2016/07/27 面试题
学年末自我鉴定
2014/01/21 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
采购员岗位职责范本
2015/04/07 职场文书
情感电台广播稿
2015/08/18 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle