时间:2021-05-22
如果一个数字能表示成 p^q,且p是一个素数,q为大于1的正整数,则此数字就是超级素数幂。
param number: 测试该数字是否是超级素数幂
return: 如果不是就返回 False,如果是就返回 p 和 q 值
例如,输入125,返回(5,3)
代码:
import mathdef 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 primedef 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 Falseprint super_prime_power(999)分析:
总的时间复杂度为o(sqrt(n)log n),再加上寻找质数花费的时间,总的时间复杂度为o(n^2 sqrt(n)log n)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
从console输入一个数,判断这个数是否为素数(质数)。复制代码代码如下:#include/**判断100以内的素数*///定义函数判断是否是素数intisP
1.1计算质数(判断输入)首先我们要明确质数(素数)的含义:所谓质数(素数),是它的因数只有1与它本身,例如2。所以我们可以这样判断一个数是否为质数:#-*-c
判断一个数是否为素数(质数):只能被1和其本身整除的数。 方案一:只有两个因子(计算因子的个数是否是2,如果是2,是素数) 方案二:因子之和==该数+1
下面是C#判断字符串是否是数字的代码://////判断字符串是否是数字///publicstaticboolIsNumber(strings){ if(s
以下实例用于判断一个数字是否为奇数或偶数:#-*-coding:UTF-8-*-#Filename:test.py#Python判断奇数偶数#如果是偶数除于2余