def problem(n):
myList = []
for i in range(2, n):
if n % i == 0:
myList.append(i)
return myList
與此代碼我想知道你將如何得到例如12的因素打印出[[6,2],[3,4]]這樣的dosnt必須在相同的順序謝謝。蟒蛇放入列表
def problem(n):
myList = []
for i in range(2, n):
if n % i == 0:
myList.append(i)
return myList
與此代碼我想知道你將如何得到例如12的因素打印出[[6,2],[3,4]]這樣的dosnt必須在相同的順序謝謝。蟒蛇放入列表
這應該爲你工作:
import math
def problem(n):
myList = []
for i in range(2, int(math.sqrt(n) + 1)):
if n % i == 0:
myList.append([i, int(n/i)])
return myList
爲了得到因素對,這種劃分n
通過i
,如果i
是一個因素,它通過i
的對將。
例如:
print(problem(12)) #output: [[2, 6], [3, 4]]
你能解釋一下哪些部分添加了嗎?謝謝 –
@joey'int(n/i)'''''''''''''''將''劃分出來,然後把答案變成一個整數。 – gommb
那麼我的名單中沒有的部分呢,那麼做什麼呢,也不是一個痛苦,還有另一種方式來做到這一點。也可以在沒有圖書館的情況下做到這一點 –
你幾乎是正確的。使用範圍,你沒有采取數字。只需添加n + 1而不是n。這應該工作。此外,你並沒有在名單上爭奪這位賤民。我也補充說。
def problem(n):
myList = []
for i in range(2, n+1):
if n % i == 0 and [int(n/i),i] not in myList:
myList.append([i,int(n/i)])
return myList
另一種方式。使用range
,並檢查循環,如果is_integer
num = 12
set([tuple(sorted(j)) for j in [[i, int(num/i)] for i in range(2,num) if (num/i).is_integer()]]
)
#Output:
#{(2, 6), (3, 4)}
爲了做到分工只有一次:
for i in range(2, int(math.sqrt(n) + 1)):
d, m = divmod(n, i)
if m == 0:
myList.append([i, d])
你不會得到重複使用上限sqrt(n)
更新後按照https://開頭stackoverflow.com/help/someone-answers –