某公司笔试题 - 质数因子(附python代码)

发布时间 2023-08-12 08:20:28作者: Alpha_To_Beta
# 输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举),(如180的质因子为2 2 3 3 5)
# 数据范围 1 <= n <= 2*10**9+14

# 质数: 指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
import math

s = input("请输入一个正整数: ")

while True:
# isdigit函数判断输入的是否是全数字
if s.isdigit():
# 将输入的数字转成正整数
s = int(s)
# 判断输入的正整数的数据范围
if s >=1 and s <= 2*10**9+14:
# 在2到这个数的平方根,遍历这个正整数的公因数
for i in range(2, int(math.sqrt(s))+1):
while s % i == 0:
print(i, end=' ')
s = int(s/i)
# 正整数本身
if s > 2:
print(s)
else:
print('输入的数超出范围,请重新输入')
break
else:
print('输入的数非正整数,请重新输入')
s = input("请输入一个正整数: ")