python筆記 分解質因數

2021-10-08 08:45:55 字數 1945 閱讀 5459

# 分解質因數,如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...