如果乙個數字能表示成 p^q,且p是乙個素數,q為大於1的正整數,則此數字就是超級素數冪。
param number: 測試該數字是否是超級素數冪
return: 如果不是就返回 false,如果是就返回 p 和 q 值
例如,輸入125,返回(5,3
**:impo math
def get_prime(number):
'''尋找小於number的所有的質數,時間複雜度o(n^2)
'''if number <= 1:
print 'wrong given number.'
returnyqibfm
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判斷是否是素數
在python中實現 取出某個數值區間範圍內的所有素數 prime 素數定義為 對於乙個正整數n,如果除了1和它本身,它再不能被任何正整數整除,則它是素數 質數 定義2是最小的素數 import math import time def is prime num return 0 not in nu...
python 判斷是字母 數字
str 1 123 str 2 abc str 3 123abc 用isdigit函式判斷是否數字 print str 1.isdigit ture print str 2.isdigit false print str 3.isdigit false 用isalpha判斷是否字母 print st...
python判斷字串是否是數字的演算法
判斷字串是否是數字 包含負數和小數 演算法1 1 分小數和整數 如果小數點個數為1,則可能是小數。如小數點個數為0,則可能是整數。小數點個數非0也非1,那麼就不是數字。2 如果是小數,再分正數和負數的情況 如果首位為負號,則可能是負小數。如果首位不為負號,則可能是正小數。1 如果首位為負號,則去掉負...