智一面的面试题提供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