Python實現分解質因數

2021-10-04 06:58:25 字數 2020 閱讀 8149

如題:

求出區間[a,b]中所有整數的質因數分解。

輸入兩個整數a,b。

每行輸出乙個數的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是從小到大的)(具體可看樣例)

3 10

3=34=22

5=56=23

7=78=222

9=33

10=25

1.先算出區間[a, b]的所有質數,由乙個列表prime儲存。

2.遍歷區間[a, b],用其中數i,依次求餘prime裡的質數,若求餘 = 0,說明找到了乙個,放到乙個資料結構裡存入。求得剩下數rest = i / 該質數 。若該rest在prime裡,則不用繼續找了,如10 = 2 * 5 。若不在,繼續遞迴rest來找。

3.最後,每找完乙個數的質數組合,控制輸出即可

# 判斷質數

defisprime

(num)

:if num >1:

for i in

range(2

, num)

:if num % i ==0:

return

false

return

true

else

:return

false

# 判斷相乘質數條件是否滿足

defsatisfy

(num2, c)

:for j in prime:

if num2 % j ==0:

satisfy_number[c]

=str

(j) num3 =

int(num2 / j)

if num3 >1:

if num3 in prime:

satisfy_number[c +1]

=str

(num3)

break

else

: satisfy(num3, c +1)

break

else

:break

a, b =

input()

.split(

)prime =

for i in

range(2

,int

(b)+1)

:if isprime(i)

:for i in

range

(int

(a),

int(b)+1

):satisfy_number =

strline =

'{}='

satisfy(i,0)

for j in

range(0

,len

(satisfy_number)-1

):strline = strline + satisfy_number[j]

+"*"

strline = strline + satisfy_number[

len(satisfy_number)-1

]print

(strline.

format

(i))

81 100
81=3*3*3*3

82=2*41

83=83

84=2*2*3*7

85=5*17

86=2*43

87=3*29

88=2*2*2*11

89=89

90=2*3*3*5

91=7*13

92=2*2*23

93=3*31

94=2*47

95=5*19

96=2*2*2*2*2*3

97=97

98=2*7*7

99=3*3*11

100=2*2*5*5

學生初習演算法,若本文有不對之處, 或有大牛有更優解,或對學生有好的建議,敬請賜教,感激不盡。

分解質因數(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...