2
我建立了兩個函數來查找素數因子。一個版本比大數量的其他功能慢。我想評估這兩個函數的運行時間。要做到這一點,我建立了一個裝飾者來評估黯然失色的時間。 由於我插入裝飾器,我的兩個函數返回None
。我的代碼有什麼問題?修飾器使函數返回無
import math
import time
def time_usage(func):
def wrapper(*args, **kwargs):
beg_ts = time.time()
func(*args, **kwargs)
end_ts = time.time()
print("[INFO] elapsed time: %f" % (end_ts - beg_ts))
return wrapper
@time_usage
def find_factors(n):
factors = []
i = 2
while i < n:
while (n % i) == 0:
factors.append(i)
n /= i
i += 1
if n > 1:
factors.append(n)
return factors
@time_usage
def improved_prime_factor(n):
factors = []
# No need to test whether the number is divisible by any
# even number other than 2
while n % 2 == 0:
factors.append(2)
n /= 2
i = 3
# If n = p * q, either p or q must be <= sqrt(n)
max_factor = math.sqrt(n)
while i <= max_factor:
while n % i == 0:
factors.append(i)
n /= i
# Update the upper band on possible factors
max_factor = math.sqrt(n)
i += 2
if n > 1:
factors.append(n)
return factors
if __name__ == '__main__':
print(improved_prime_factor(125556)) # return None
print(find_factors(125556)) # return None
裝飾
wrapper
方法,因爲你沒有快速回復返回您的函數調用的結果 – styvane