把一个数分解为质因数相乘
90=2x3x3x5, 其中2、3、5都是质数。
本题的一般思路是将输入的这个数从2开始做循环进行尝试,如果找到因数,再进行判断这个数是不是质数,如果是就算质因数,接着进行下一次尝试查找。
但细思之后你就会发现,从2开始尝试,第一个找到的因数肯定是质因数,因为如果不是质因数,一定会有比它小的因数会提前找到。所以编程的思路就变得简单。所以不用判断其是不是质数!!!!!
def decompose(n):
res=[]
i=2
while i<=n:
if n%i==0:
res.append(i)
n=n/i
else:i+=1
return res
print(decompose(5))
注意,循环的条件一定是i<=n
, 而不是i*i<=n
。因为i
为要求的n
的一个因数,如果n=6,i=3
,此时i满足条件,但因为3*3=9
,无法进入循环
质数判断
def jude(n):
if n==1:return False#1不是质数
i=2
while i*i<=n:
if n%i==0:
return False
i+=1
return True
n=51
print(jude(n))
def jude(n):
if n==1:return False#1不是质数
for i in range(2,n):
if n%i==0:
return False
return True
n=1
print(jude(n))