我需要生成所有可能的(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