如題:
求出區間[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...