066-质因数

每个合数都可以写成几个质数相乘的形式,这几个质数都叫做这个合数的质因数。如果一个质数是某个数的约数,那么就说这个质数是这个数的质因数。 就是一个数的约数,并且是质数,比如8=2乘2乘2,2就是8的质因数。12=2×2×3,2和3就是12的质因数。把一个式子以12=2×2×3的形式表示,叫做分解质因数。16=2×2×2×2,2就是16的质因数,把一个合数写成几个质数相乘的形式表示,叫做分解质因数。 分解质因数的方法是先用一个合数的最小质因数去除这个合数,得出的数若是一个质数,就写成这个合数相乘形式;若是一个合数就继续按原来的方法,直至最后是一个质数 。 分解质因数的有两种表示方法,除了大家最常用知道的“短除分解形式”之外,还有一种方法就是“塔形分解形式”。 分解质因数对解决一些自然数和乘积的问题有很大的帮助,同时又为求最大公约数和最小公倍数做了重要的铺垫。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
# 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。其实就是求最小的能分解的因数

n = int(input('请输入需要分解的正数:'))
# 创建一个列表用来存放遍历出来的因数
lt = []
# 给n换个名字记录,便于打印时打印出用户输入的n
m = n

while n > 1:
    for i in range(2,n+1):
        if n%i==0:
            # 记录下用最小因数分解后的n ,因为是从2开始的因此都是先寻找的最小的,用的就是短除法
            n = n//i  #因为n对i能够求余等于0因此可以直接整除
            # 把i转换成str,存到列表,便于后面用join拼接字符串列表,
            lt.append(str(i))
            # 找到一个最小的因数时,就跳出for in循环,开始下一次循环,每次循环都是对当前数的乘法的分解
            break
if len(lt) == 1:
    print(m,'=','1 ×',m)
else:
    s = '×'.join(lt)
    print(m,'=',s)

连质因数我都不会求,感觉受到了重大的打击,唉.