我有一個素數分解程式:
import sys
import math
def prime_factorize(n):
factors = []
number = math.fabs(n)
while number > 1:
factor = get_next_prime_factor(number)
factors.append(factor)
number /= factor
if n < -1:
factors[0] = -factors[0]
return tuple(factors)
def get_next_prime_factor(n):
if n % 2 == 0:
return 2
for x in range(3, int(math.ceil(math.sqrt(n)) 1), 2):
if n % x == 0:
return x
return int(n)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: %s <integer>" % sys.argv[0])
exit()
try:
number = int(sys.argv[1])
except ValueError:
print("'%s' nie jest liczba calkowita!" % sys.argv[1])
else:
print ("%d =" %number, *prime_factorize(number), sep='*')
程式回傳 123456:
123456 =*2*2*2*2*2*2*3*643
我想以格式輸出:
123456 = 2^6*3*643
最好的解決方案是將元組轉換為字串?如何獲得這種輸出格式?
uj5u.com熱心網友回復:
我相信這就是你所追求的:
...
else:
tup = prime_factorize(number)
print("{} = {}".format(number, "*".join("{}^{}".format(x, tup.count(x)) if tup.count(x) > 1 else str(x) for x in sorted(set(tup)))))
輸出:
123456 = 2^6*3*643
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516517.html
標籤:Python数组细绳元组
