A36281. 因数分解问题描述每个正整数都可以分解成素数的乘积,例如:6=2x3 现在,给定一个正整数N,请按要求输出它的因数分解式。输入描述输入第一行,包含一个正整数 。约定 2<=N <10^12输出描述输出一行,为N的因数分解式。要求按质因数由小到大排列,乘号用星号*表示,且左右各空一格。当且仅当一个素数出现多次时,将它们合并为指数形式,用上箭头^表示,且左右不空格。样例输入16样例输出12 * 3样例…
填空题
困难
知识点
题目描述
因数分解
问题描述
每个正整数都可以分解成素数的乘积,例如:6=2x3
现在,给定一个正整数N,请按要求输出它的因数分解式。
输入描述
输入第一行,包含一个正整数 。约定 2<=N <10^12
输出描述
输出一行,为N的因数分解式。要求按质因数由小到大排列,乘号用星号*表示,且左右各空一格。当且仅当一个素数出现多次时,将它们合并为指数形式,用上箭头^表示,且左右不空格。
样例输入1
6
样例输出1
2 * 3
样例输入2
20
样例输出2
2^2 * 5
参考答案
input_number = int(input())
original_number = input_number
factors = []
def isPrime(num):
for j in range(2, int(num * * 0.5)):
if num % j == 0:
return False
return True
if isPrime(input_number):
factors.append([input_number, 1])
else :
for i in range(2, input_number + 1):
input_number = int(input_number)
if input_number % i == 0:
factors.append([i, 0])
while input_number % i == 0:
factors[-1][1] += 1
input_number //= i
if isPrime(input_number):
if input_number != 1:
factors.append([input_number, 1])
break
for i in range(len(factors)):
if i != 0:
print(" * ", end = "")
if factors[i][1] == 1:
print(factors[i][0], end = "")
else :
print(f "{factors[i][0]}^{factors[i][1]}", end = "")
print("")
上一题
下一题