我需要生成所有可能的(a, b, c)
,如a * b * c = V
,其中V是function parameter
。生成給定體積的所有立方體
是否有一些正確的方法來完成我的任務?我嘗試使用a, b, c
的完全蠻力,但它非常緩慢。這是由於事實,即V
可能超過10^4
。
P.S. a, b, c
是整數。
我需要生成所有可能的(a, b, c)
,如a * b * c = V
,其中V是function parameter
。生成給定體積的所有立方體
是否有一些正確的方法來完成我的任務?我嘗試使用a, b, c
的完全蠻力,但它非常緩慢。這是由於事實,即V
可能超過10^4
。
P.S. a, b, c
是整數。
我猜你正在做這樣的事情:
def prisms(V):
for a in range(1, V+1):
for b in range(1, V+1):
for c in range(1, V+1):
if a*b*c = V:
print a,b,c
您可以從O(N^3)從派生C的值降低了複雜性,O(N^2)已經知道和A的值B.
def prisms(V):
for a in range(1, V+1):
for b in range(1, V+1):
if V % (a*b) == 0:
c = V/(a*b)
print a,b,c
這不是做最有效的方式,但其實很簡單,可以是大約10 ** 4 V的值足夠好。
假設「立方體」的意思是「矩形棱鏡」:不可能的,有無數的解決方案。防爆。對於V = 1,有(1,1,1),(1,2,1/2),(1,3,1/3),(1,4,1/4),(1,5,1/5)...永遠持續。 – Kevin 2014-12-04 19:52:28
假設你想要整數解,然後把V分解成素數積,並考慮如何在a,b,c之間分配素數。 – 2014-12-04 19:54:43
@凱文,是的,我的意思是直角棱鏡。我很抱歉,但我只需要整數'a,b,c'。 – Max 2014-12-04 19:55:00