# 分解質因數,如90 = 2 * 3 * 3 * 5,
# 1。分成兩步走,一是判斷質數,二是對傳入的數字進行處理
defiszhishu
(num)
:if num <=1:
return
false
else
:for i in
range(2
, num)
:if num % i ==0:
return
false
return
true
defmyfunc
(num)
: list1 =
num =
int(num)
tmp = num
# 用了兩個迴圈,乙個for,乙個while
if iszhishu(num)
or num<=1or
not num:
return r"能寫成質因數乘積這種形式的只能是大於1的正整數,請檢查引數"
else
:for i in
range
(int
(num/2)
+1):
while iszhishu(i)
and tmp%i==0:
tmp = tmp/i
if list1:
print
("{}={}"
.format
(num,list1[0]
),end='')
for i in
range(1
,len
(list1)):
print
("*{}"
.format
(list1[i]
),end='')
# 沒有return語句,會預設返回none
return
""# 2。借鑑的方法,核心是兩個for迴圈+break,不太好處理
defmy_func2
(num)
: f =
ifint
(num)
andint
(num)
>=4:
num =
int(num)
n = num
# 需要多次迴圈,防止遺留4,6,9這種因數,我們需要的是2,3這種質因數的乘積
for j in
range
(int
(num/2+
1)):
# 處理的是餘數
for i in
range(2
,n):
# 如果i能整除,則說明i是質因數
if n%i==0:
# 儲存這個質因數
# 對n取餘數,用整除,向下取整
n=n//i
# 拿到乙個質因數馬上推出內層的for迴圈,回到外層的for迴圈,防止出現4,6,9這種質因數
break
iflen
(f)==0:
return r"傳入的引數無法寫成這種形式"
else
: f.sort(
)print
('{}={}'
.format
(num,f[0]
),end='')
for i in
range(1
,len
(f))
:print
('*{}'
.format
(f[i]
),end='')
return
""if __name__==
"__main__"
:print
(myfunc(32)
)print
(my_func2(32)
)
分解質因數(python)
尋找質因數 def digui num for i in range 2 int 1 num 2 if num i 0 print d i,end num int num i digui num ifzspd num 1 print d num break 判斷乙個數是否是質數 def zspd s...
分解質因數
質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...
分解質因數
分解質因數 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3...