描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1 ≤ n ≤ 2 × 1 0 9 + 14 1≤n≤2×10^9 +14 1≤n≤2×109+14
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入: 180
输出: 2 2 3 3 5
方案一
import sys
def is_prime(n):
if n <= 1:
return False
for i in range(2,int(n**0.5)+1):
if n% i == 0:
return False
return True
def prime_factors(n):
factors = []
for i in range(2, n + 1):
while n % i == 0 and is_prime(i):
factors.append(i)
n //= i
return factors
for n in sys.stdin:
n = int(n.strip())
if is_prime(n):
print(n)
else:
print(" ".join(map(str, prime_factors(n))))
方案二
import sys
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
for n in sys.stdin:
factors = prime_factors(int(n))
print(" ".join(map(str, factors)))