智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76
题目
将一个正整数分解质因数。例如:输入100,打印出100=2*2*5*5。
解法1 for循环
程序分析:
1、对n进行分解质因数,应先找到一个最小的质数k,
2、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
3、如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
4、如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
程序源代码:
def reduceNum(n):
print ('{} = '.format(n), end=" ")
if n in [1] :
print ('{}'.format(n))
while n not in [1] : # 循环保证递归
for index in range(2, n + 1) :
if n % index == 0:
n //= index # n 等于 n//index
if n == 1:
print (index )
else : # index 一定是素数
print ('{} *'.format(index), end=" ")
break
reduceNum(int(input("请输入一个数:")))
运行结果:
解法2 列表
程序分析:
1、对每一个能整除的数进行判断
2、判断这个数是否是质素,质数只能被1和自己整除,所以一定是最小因子
3、然后将这个质数加入到列表中,最后输出
def reduceNum(n):
l = []
while n > 1:
for i in range(2, n + 1):
if n % i == 0:
n = n//i
l.append(i)
break
return l
s = input("输入一个正整数:")
if s.isdigit() and int(s) > 0:
print(s, "=", " * ".join([str(x) for x in reduceNum(int(s))]))
else:
print("请输入正确的正整数")
运行结果:
还有更多其他的解法,欢迎一起交流学习
————————————————
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=364151fab9fb6e1b468f50b4d83afd42