python判斷數字是否是超級素數冪

2022-10-04 18:54:11 字數 1102 閱讀 3170

如果乙個數字能表示成 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 如果首位為負號,則去掉負...